2011-02-05 138 views
2

使用jQuery选择器,是否可以选择不是其他选择器元素后代的所有元素。选择不是指定元素的后代的所有元素

例如,我想选择所有的a标签,它们是而不是标签的后裔th标签。我可以看到做是正确的,现在唯一的办法如下:

$('a').filter(function() { 
    return $(this).closest('th').size() == 0 
}) 
+2

你是指兄弟姐妹还是后代?你的代码建议后者 – lonesomeday 2011-02-05 23:47:20

+0

正如@日常暗示的:**`a`元素*不能是* th元素的兄弟**。你能发布你正在使用的HTML吗? – 2011-02-05 23:52:57

回答

6

假设你正在寻找的后裔(因为有a元素作为同级th元素是无效的HTML),你可以使用:not伪选择这样做:

$('a:not(th a)'); 

这应该是相当快使用document.querySelectorAll现代浏览器,但可能会为旧版本的IE会比原来慢。

看到一个简单的演示在这里:http://jsfiddle.net/JR5sP/

0

假设你想要做你的问题问(不论无效的HTML事实)和过滤元素与特定的兄弟姐妹,

你可以做这样的:

$('a').filter(function() { 
    return $(this).siblings('b').length == 0; 
}).css('color', 'orange'); 

HTML:

<div> 
    <b>Hello there</b> 
    <a>Don't select me!</a> 
</div> 

<div> 
    <a>Select me!</a> 
    <a>Select me too!</a> 
</div> 

http://jsfiddle.net/JR5sP/1/

相关问题