jQuery – 仅设置元素的文本而不删除其他元素(锚点)

我有这样一个元素:

 anchor [ some text ]  

我需要在jQuery中设置它的文本,而不删除锚点。

元素的内容可能会有所不同(文本之前或之后),实际文本是未知的。

谢谢

新的更新

这就是我使用的,只假设一个文本节点:

  function setTextContents($elem, text) { $elem.contents().filter(function() { if (this.nodeType == Node.TEXT_NODE) { this.nodeValue = text; } }); } setTextContents( $('td'), "new text"); 

尼尔的回答是我的建议。 jQuery没有办法选择文本节点如何用jQuery选择文本节点? 。

更改HTML结构将使最简单的代码。 如果你不能这样做,你可以使用childNodes属性寻找类型3的节点(TEXT_NODE)

下面是一些示例代码,假设最后一个节点是您要编辑的节点。 这是一种比替换td的整个内容更好的方法,因为在重新创建HTML时可能会丢失事件处理程序

 $('a').click(() => console.log(' was clicked')) $('#btn').click(() => $('.someClass').get(0).lastChild.nodeValue = " New Value"); 
  
anchor [ some text ]

如果可以将文本放在跨度中:

  anchor [ some text ]  

你可以做:

 $('td#someID span').text('new text') 

不改变标记:

现场演示

 var anchor = $('td').find('a').clone(); $('td').text('{ some other text }').prepend(anchor);