我有以下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(使用前将#替换为@)