我正在尝试在每个“animate”类中找到一个“tip”类,然后如果在其中找到了一个提示类,则显示带有show()
的“animate”类。
我的代码似乎有问题,因为它根本不起作用。
我的尝试:
if($('.animate').find('.tip').length === 1) {
$(this).show();
}
HTML
<div class="foobar">
<div class="animate">
<div class="tip">- This is a tip.</div>
</div>
<div class="animate">
<div>- This is not a tip.</div>
</div>
<div class="animate">
<div class="tip">- This is a tip.</div>
</div>
</div>
答案 0 :(得分:4)
您需要依次考虑每个$('.animate')
;
$('.animate').each(function () {
if ($(this).find('.tip').length) {
$(this).show();
}
});
...虽然您也可以使用has()
selector在一行中执行此操作;
$('.animate:has(.tip)').show();
但是,我猜你也想隐藏与选择器不匹配的元素,所以你可以通过(demo);
来做$('.animate').each(function () {
$(this).toggle(!!$(this).find('.tip').length);
});
......或(demo):
$('.animate').hide().filter(':has(.tip)').show();
答案 1 :(得分:1)
我认为您没有得到正确的this
问题
$(".animate").each(function(){
if($(this).find(".tip").length===1){
$(this).show();
});
});