选择第一级文本元素“.text()”而不选择子元素

2024-04-07

我有以下html

<label>
outer
<span>inner</span>
</label>

我想替换“外部”值,使跨度及其“内部”文本保持不变。使用

$('label').text('new outer');

替换标签的全部内容(以及跨度)。有没有一种巧妙的方法可以只选择文本块“外部”,而不添加额外的跨度或执行高级操作,例如存储标签内部跨度的值然后重新应用它?


这将仅更新第一个的文本Text node http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1312295772在元素中,不干扰span(或任何后续Text nodes):

$("label").contents().each(function() {
  // Within this iterator function, jQuery sets `this` to be
  // each child node (including Text nodes, not just Elements)
  if (this.nodeType === 3) { // 3 = text node
      this.nodeValue = "updated ";
      return false;
  }
});

实例 http://jsbin.com/iyulen | source http://jsbin.com/iyulen/edit

当然,您可以对其进行改进。这Text节点的当前文本(当然)可以从node.nodeValue,所以如果您只想修改它(也许只替换它的某些部分),您可以这样做;或者如果您想修改与给定模式匹配的第一个,等等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择第一级文本元素“.text()”而不选择子元素 的相关文章

随机推荐