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

8 javascript jquery

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

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

<span>
   <a>Text I want to ignore</a> 
   Text I want
</span>
Run Code Online (Sandbox Code Playgroud)

我的解决方案是获取<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, '');
Run Code Online (Sandbox Code Playgroud)

use*_*654 7

您必须转到文本节点:

var text_i_want = $("span").contents().filter(function(){
    return this.nodeType === 3;
}).text();?
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/UeBZq/

  • 我总是忘记文本节点'`nodeType === 3`,做得很好.可以补充一点,如果OP希望在他想要的文本之前/之后修剪换行符和额外的间距,你可以使用[`$ .trim`](http://api.jquery.com/jQuery.trim/) - [小提琴](http://jsfiddle.net/ult_combo/UeBZq/2/). (2认同)

aaa*_*aaa 5

$("span")
    .clone()
    .children()
    .remove()
    .end()
    .text();
Run Code Online (Sandbox Code Playgroud)

应该这样做

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