【问题标题】:How do I access text inside an element while ignoring some text inside a tag adjacent to the text? [duplicate]如何在忽略与文本相邻的标签内的某些文本时访问元素内的文本? [复制]
【发布时间】:2012-06-24 05:05:37
【问题描述】:

当文本本身与另一个包含文本的元素相邻时,从 jQuery 元素中获取文本的好方法是什么?

在此示例中,我想获取文本:“我想要的文本”,同时忽略相邻子元素中的文本:

<span>
   <a>Text I want to ignore</a> 
   Text I want
</span>

我的解决方案是获取&lt;span&gt; 标记中的所有文本,然后删除&lt;a&gt; 标记中的所有文本。这感觉有点尴尬,所以我想知道是否有更好的方法:

var all_the_text = $('span').text();
var the_text_i_dont_want = $('span').find('a').text();
var text_i_want = all_the_text.replace(the_text_i_dont_want, '');

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您必须为此转到文本节点:

    var text_i_want = $("span").contents().filter(function(){
        return this.nodeType === 3;
    }).text();​
    

    http://jsfiddle.net/UeBZq/

    【讨论】:

    • 我总是忘记文本节点的nodeType === 3,做得很好。可以补充说,如果 OP 希望在他想要的文本之前/之后修剪换行符和额外间距,您可以使用 $.trim - fiddle
    • 这太棒了!仅供参考:如果您可以保证 textnode 始终是第一个元素(在任何子榆树之前).. 您可以直接引用它而无需像这样过滤:var text_i_want = $("span").contents()[0] .. 或者您可以使用.first()如果你想继续链接 jQuery 方法。
    【解决方案2】:
    $("span")
        .clone()
        .children()
        .remove()
        .end()
        .text();
    

    应该这样做

    给予适当的信任 :) http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/

    【讨论】:

      【解决方案3】:

      删除标签并获取跨度内容。 Working Demo

      <span>
         <a>Text I want to ignore</a> 
         Text I want
      </span>​
      
      var all_the_text = $('span').find('a').remove();
      alert($('span').text());
      

      【讨论】:

      • 为什么是JSON.stringify?你可以使用$('span').text()
      • 我不想在它工作后立即重构它 :) 现在清理它!
      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 2011-02-26
      • 2015-01-13
      • 2020-06-20
      • 1970-01-01
      相关资源
      最近更新 更多