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 ]
不改变标记:
现场演示
var anchor = $('td').find('a').clone(); $('td').text('{ some other text }').prepend(anchor);