0

我已经为这个特定问题及其相关主题搜索了网络和 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>
4

2 回答 2

5

我真的不明白为什么这会是一个问题,您基于标记定位元素,否则您将如何定位它们:

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

小提琴

编辑:

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

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

小提琴

于 2013-07-04T09:34:23.443 回答
0

一个基于 jQuery 的解决方案,它替换了所有的文本节点——你必须调整它

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

演示:小提琴

于 2013-07-04T09:40:34.893 回答