2010-12-15 68 views
1

是否可以选择不在另一个嵌套标签内的标签的值?jquery选择器 - 选择不在另一个嵌套标签内的值

例如,在下面的代码中,我想从$('#example')获得'Text I want to select'文本。

<td id="example"> 
    <a> Text I don't want to select</a> 
    <span> Other text I don't want to select</span> 
    Text I want to select 
    <anyOtherTag> Other text I don't want to select</anyOtherTag> 
</td> 

谢谢。

+0

jQuery没有帮助功能。这是一个关于这个问题的好主意(我如何选择带有jQuery的文本节点)。 http://stackoverflow.com/questions/298750/how-do-i-select-text-nodes-with-jquery – 2010-12-15 19:04:56

回答

3

您可以使用.contents().filter()到文本节点类型(nodeType == 3),像这样:

var text = $("#example").contents().filter(function() { 
       return this.nodeType == 3; 
      }).text(); 
alert($.trim(text)); 

You can try it out here。因为.text()获得所有文本节点,包括其他空格,所以您可能想要$.trim()(因为IE < 9没有String.trim())结果就像我上面所述。

+0

谢谢你的好主意。唯一的问题是,我没有得到它在我的真实例子中工作。事实上,我的表与jQuery插件数据表一起使用,并且可以jeditable,所以当用户点击一张表时,我想获取这些信息。我记录了我的变量,并且我得到了$(this)正确的td,但是当我做$(this).contents()时它是空的。可能是因为我在使用数据表插件? – Javi 2010-12-15 19:20:47

+0

@Javi - 这一切都取决于你的上下文,尝试一个'console.log(this)',看看它发生的时间 – 2010-12-15 19:22:26