使用jQuery选择器,是否可以选择不是其他选择器元素后代的所有元素。选择不是指定元素的后代的所有元素
例如,我想选择所有的a
标签,它们是而不是标签的后裔th
标签。我可以看到做是正确的,现在唯一的办法如下:
$('a').filter(function() {
return $(this).closest('th').size() == 0
})
使用jQuery选择器,是否可以选择不是其他选择器元素后代的所有元素。选择不是指定元素的后代的所有元素
例如,我想选择所有的a
标签,它们是而不是标签的后裔th
标签。我可以看到做是正确的,现在唯一的办法如下:
$('a').filter(function() {
return $(this).closest('th').size() == 0
})
假设你正在寻找的后裔(因为有a
元素作为同级th
元素是无效的HTML),你可以使用:not
伪选择这样做:
$('a:not(th a)');
这应该是相当快使用document.querySelectorAll
现代浏览器,但可能会为旧版本的IE会比原来慢。
看到一个简单的演示在这里:http://jsfiddle.net/JR5sP/
假设你想要做你的问题问(不论无效的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>
你是指兄弟姐妹还是后代?你的代码建议后者 – lonesomeday 2011-02-05 23:47:20
正如@日常暗示的:**`a`元素*不能是* th元素的兄弟**。你能发布你正在使用的HTML吗? – 2011-02-05 23:52:57