如何替换嵌套在javascript / jquery中的元素的元素上的文本

时间:2013-07-04 09:27:53

标签: javascript jquery html replace

我已经搜索了这个特殊问题的网和SO以及它的问题。相关主题。一些解决方案接近但不适用,因为提供的解决方案仅限于在元素内寻找绝对点/索引(例如,第一个和最后一个节点)。

我在jquery / javascript中寻找一种方法来替换与元素中任何位置的其他元素在同一级别上的文本。

<div id="master_element">
  <a href="#" id="link">Erp. a text</a>

  **This must be the only text replaced**

  <em>Herp. em text</em>
  <div id="nest_meh">
    <div id="we_need_to_dig_deeper">
      nested div from hell
    </div>
  </div>
</div>

2 个答案:

答案 0 :(得分:5)

我真的不明白为什么这会是一个问题,你根据标记来定位元素,你还会如何定位它们:

document.getElementById('link').nextSibling.nodeValue = 'something else';

FIDDLE

修改

替换未包含在元素等中的文本节点,无论它们出现在主元素中的哪个位置,您都会执行以下操作:

var elems = document.getElementById('master_element').childNodes;

for (var i=0; i<elems.length; i++) {
    var el = elems[i];
    if (el.nodeType === 3 && el.nodeValue.trim().length) 
        el.nodeValue = 'something else';
}

FIDDLE

答案 1 :(得分:0)

一个jQuery基础解决方案,它取代了所有文本节点 - 你必须调整它

$('#master_element').contents().filter(function(){
    return this.nodeType == 3;
}).each(function(){
    this.textContent = 'new'; //need to make it cross browser 
})

演示:Fiddle