示例:
<div class="main">
<div><div class="left"></div></div>
<div><div class="special"></div></div>
</div>
<div class="main">
<div><div class="right or center or any"></div></div>
<div><div class="special"></div></div>
</div>
我想选择所有特殊类,但过滤掉.closest(&#39; .main&#39;)。find(&#39; .left&#39;)
所以,我想要这样的事情:
$('.special').not('.special').closest('.main').find('.left')
当然这不正确,但我没有找到任何使用.not选择器和.close和.find的例子。
答案 0 :(得分:1)
你去吧
$('.special').filter(function () {
if ($(this).closest('.main').find('.left').length > 0) {
console.log('invalid', $(this));
} else {
console.log('valid', $(this));
}
});
更新
var list = $('.special').filter(function () {
return ($(this).closest('.main').find('.left').length == 0);
});
console.log(list);
使用过滤器,您可以应用自己的过滤器并接收与其匹配的元素列表
答案 1 :(得分:0)
要选择类special
的所有元素,但要使用您的条件排除,请执行以下操作:
$('.special').each(function(){
if(!$(this).closest('.main').find('.left')) {
// logs element to console
console.log(this);
}
});
另一种基于HTML的方法是这样的:
$('.special').each(function(){
if(!$(this).parent('div').siblings('div').children('.left')) {
// logs element to console
console.log(this);
}
});
此外,在课程div
的{{1}}内,您似乎在内心main
附近有一个额外的(不必要的)div
。我建议删除它们并相应地更新代码以保持代码清洁。