9

当文本本身与另一个包含文本的元素相邻时,从 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, '');
4

3 回答 3

8

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

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

http://jsfiddle.net/UeBZq/

于 2012-06-21T21:33:43.317 回答
6
$("span")
    .clone()
    .children()
    .remove()
    .end()
    .text();

应该这样做

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

于 2012-06-21T21:35:24.083 回答
2

删除标签并获取跨度内容。工作演示

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

var all_the_text = $('span').find('a').remove();
alert($('span').text());
于 2012-06-21T21:44:23.047 回答