Javascript jQuery如何仅为当前级别编辑html文本?;
我有这样一个DOM结构:Javascript jQuery如何仅为当前级别编辑html文本?;,javascript,jquery,Javascript,Jquery,我有这样一个DOM结构: <div id="a"> AA <span>BB</span> </div> AA BB 我想更改div中的文本而不是span中的文本,即更改AA但保留BB,但是当我尝试$('#a').text()时,我得到了AABB。仅在div级别选择文本的正确方法是什么?我从这个链接创建了一个示例: 我希望它能帮助你 HTML <div id="a"> AA
<div id="a">
AA
<span>BB</span>
</div>
AA
BB
我想更改div中的文本而不是span中的文本,即更改AA但保留BB,但是当我尝试$('#a').text()时,我得到了AABB。仅在div级别选择文本的正确方法是什么?我从这个链接创建了一个示例: 我希望它能帮助你 HTML
<div id="a">
AA
<span>BB</span>
</div>
请检查,这是正确的
var child = $('#a span');
var value = "new value";
$('#a').text(value + child.html());
最好的方法是遍历
#a
的子节点并测试它们是否为文本节点。对于每个文本节点,您将希望累积内部文本并返回它:
作为通用函数:
function getText($el, separator) {
var s = separator || '',
children = $el.childNodes,
l = children.length,
text = [],
child;
for(; child = children[--l];)
if (child.nodeType === 3)
text.unshift(child.nodeValue);
return text.join(s);
}
作为jQuery插件
$.fn.getText = function(separator) {
var s = separator || '',
children = this.get(0).childNodes,
l = children.length,
text = [],
child;
for(; child = children[--l];)
if (child.nodeType === 3)
text.unshift(child.nodeValue);
return text.join(s);
}
他说他需要把span和BB放在里面,所以去掉它是错误的!谢谢,我会换的
$.fn.getText = function(separator) {
var s = separator || '',
children = this.get(0).childNodes,
l = children.length,
text = [],
child;
for(; child = children[--l];)
if (child.nodeType === 3)
text.unshift(child.nodeValue);
return text.join(s);
}