如何在忽略文本旁边的标签内的某些文本的同时访问元素内的文本?

时间:2012-06-21 21:29:25

标签: javascript jquery

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

在这个例子中,我想得到文本:'我想要的文字'而忽略了相邻子元素中的文字:

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

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

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, '');

3 个答案:

答案 0 :(得分:7)

您必须转到文本节点:

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

http://jsfiddle.net/UeBZq/

答案 1 :(得分:5)

$("span")
    .clone()
    .children()
    .remove()
    .end()
    .text();

应该这样做

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

答案 2 :(得分:2)

删除标记并获取范围内容。 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());