Javascript jQuery如何仅为当前级别编辑html文本?;

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

我有这样一个DOM结构:

<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);
}