我有一个父 div 包含三个子 div,我想检查子 div 以查看它们是否为空,如果它们都为空,我想隐藏父 div,以便背景在我的设计中消失。
<div class="main">
<div class="tot1"></div>
<div class="tot2"></div>
<div class="tot3">test</div>
<div>
jQuery(".tot1:empty, .tot2:empty, .tot3:empty").parent().hide();
其他答案都很好,但出于性能原因我推荐这个:
$('.main').each(function () {
var $main = $(this),
$allChildren = $main.children();
$allEmptyChildren = $allChildren.filter(':empty');
$main.toggle($allChildren.length !== $allEmptyChildren.length);
});
- 即使有多个也能正常工作
.main
页面中的元素。
- 它缓存的值
$(this)
并重用查询结果以提高性能。
- 事实并非如此
hide()
the .main
and show()
再次绘制(以避免重新绘制)。
- 它不需要在父节点上进行任何额外的标记。
- 即使稍后您决定更改子节点,它也可以工作
<div>
到更语义化的东西。
- 不仅隐藏了
.main
当所有子项都是空的时,当子项有文本时它会显示它们。所以它可以处理隐藏和显示。您所要做的就是再次运行它。
源代码非常具有解释性:它找到所有直接子代。然后找到空的。如果空子节点的数量等于所有子节点的数量,它将隐藏父节点(甚至不使用parent()
功能)。这可能需要多几行代码,但速度很快。
Try it live.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)