我有类似的标记:
<div class='wrapper plugin'>
//some content
<div class='child-wrapper plugin'>
//some more content
<div>
<ul>
<li><div class='cliky'>clicky!</div></li>
</ul>
</div>
</div>
<div class='cliky'>clicky!</div>
</div>
我需要能够选择第一个 .clicky
div ,而不是.clicky
div中的任何.plugin > .plugin
div 。
包装器也有.plugin
类 - 可能看起来反直觉,所以查看它的另一种方法是:我想得到给定.clicky
div的.plugin
个孩子,但是不是.plugin .plugin .clicky
。
我尝试过选择器:
$('.wrapper').find('.clicky').not('.plugin > .clicky');
但是他们仍然选择了所有子.clicky
元素 - 包括嵌套.plugin
元素的元素。
我如何才能仅选择特定.plugin .clicky
div的.plugin
元素,而不选择任何.plugin .plugin .clicky
元素?
答案 0 :(得分:4)
试试这个:
$('.wrapper .clicky').filter(function(){
return $(this).parents('.plugin').length === 1
})
答案 1 :(得分:1)
$('.wrapper').find('.plugin .clicky')[0];
应返回“found”数组的第一个元素。如果需要将结果合并到jquery obj中,只需重新获取它。
var t = $( $('.wrapper').find('.plugin .clicky')[0]);
答案 2 :(得分:1)
您可以使用:
$('.wrapper .cliky').not('.plugin > .plugin .cliky');
或
$('.wrapper .cliky:not(.plugin > .plugin .cliky)');
在jQuery 1.9中测试