最初我会有
<div id="a">
<div id="a_1" class="toBeHide"> something </div>
<div id="a_2" class="toBeHide"> something </div>
<div id="a_3" class="toBeHide"> something </div>
<div>
<div id="b">
<div id="b_1" class="toBeHide"> something </div>
<div>
我会$('#b_1').hide()
,现在我会说#b
已经没有孩子了。
我的问题是如何检测是否有更多的孩子并隐藏#b
?
答案 0 :(得分:3)
由于您只是隐藏孩子,您可以使用:visible
进行检查:
if($('#b > div:visible').length === 0) {
$('#b').hide();
}
答案 1 :(得分:0)
试试这个:如果孩子的长度为零,则隐藏b_1
$(function(){
if($('#b_1').children().length == 0)
$('#b_1').hide();
});
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以使用.css()
方法:
$('#b').css('display', function(){
return $(this).contents().length === 0 ? 'none' : 'block';
});
需要注意的事项:
.css()
方法并使用display
属性。.css()
$(this).contents().length
它也会检查textNodes。对于#4,如果您的标记是这样的:
<div id="b">
something.
</div>
答案 4 :(得分:0)
你去:http://jsfiddle.net/23zbU/10/
$('#b_1').hide();
var visibleCount=0;
$('#b').children().each(function(){
if(!$(this).is(':hidden')){
visibleCount++;
}
if(visibleCount==0){
$('#b').hide();
}
else{
$('#b').show();
}
});
此代码实际上自动显示和隐藏#b