代码之家  ›  专栏  ›  技术社区  ›  Dimskiy

仅选择元素的文本(而不是其子元素/子元素的文本)

  •  8
  • Dimskiy  · 技术社区  · 16 年前

    请考虑以下HTML:

    <td>
      Some Text
      <table>.....</table>
    </td>
    

    我需要操纵“一些文本”的文本 td 元素。我不应该碰这里面的桌子 td公司

    举个例子,也许我想用“@”替换所有的“e”。我用jQuery的.text()和.html()尝试了几种方法。我似乎总是从孩子的桌子里挑选一些我不应该碰的东西。另外,不幸的是,我不能将“Some Text”包装成span或div。

    2 回复  |  直到 14 年前
        1
  •  7
  •   jAndy    16 年前
    $(function(){
      $('td').contents().each(function(){
         if(this.nodeType === 3)
          $(this).replaceWith(this.wholeText.replace(/e/g, '#'));
      });
    });
    

    $('td').contents().each(function(){
      if(this.nodeType === 3)
         this.data = this.wholeText.replace(/e/g, '#');
     });
    

    .contents() 交付 全部的 元素, 文本节点 包括。

        2
  •  4
  •   lucideer    16 年前

    每个

    var nodes=tdEl.childNodes;
    for(var i=0; i<nodes.length; ++i){
      if(nodes[i].nodeType===3){  // 3 means "text"
        nodes[i].data = nodes[i].wholeText.replace(/e/g, '@');
      }
    }
    

    我是否正确理解你在找什么?

    如果您已经为其他内容加载jQuery,那么可以使用它,但是我不会为上面的少量代码加载24kb库。