【问题标题】:Check if all children elements are hidden检查是否所有子元素都被隐藏
【发布时间】:2012-05-10 01:46:48
【问题描述】:

我的脚本有点卡在这里:

它是一个过滤所有.notme 图像并隐藏它的列表项的复选框。 现在的问题是我无法为fadeToggle 获得有效的回调函数。 它的行为应该是这样的:

如果#list-team-single-container 的所有孩子都“不显示” - 做点什么。

$('#show-only-my-teams').change(function(){
    $('.notme').each(function(){
        $(this).parent().parent().fadeToggle('fast', function(){
        });
    });
}); 

【问题讨论】:

  • 任何标记,如儿童?

标签: jquery visibility


【解决方案1】:
if($('#list-team-single-container').children(':visible').length == 0) {
   // action when all are hidden
}

【讨论】:

  • 加一个,但我建议使用=== 而不是==
  • 请注意 :visible 表示它正在占用页面上的空间。如果它嵌套在隐藏元素中并且当前未显示,它将不会被视为:可见。如果您想确保它不是“display:none”,这可能还不够。
  • 如果我要检查样式怎么办? display: none 还是 display: block?它对任何人都不起作用,但对于阻止它不起作用。
  • @Si8 你可以检查孩子的属性(?)
【解决方案2】:

:visible jQuery 选择器可能是您正在寻找的...

来自description

如果元素占用了文档中的空间,则认为它们是可见的。 可见元素的宽度或高度大于零。

具有可见性的元素:隐藏或不透明度:0 被认为是可见的, 因为它们仍然会占用布局中的空间。在动画期间 隐藏一个元素,该元素被认为是可见的,直到结束 的动画。在显示元素的动画期间,该元素是 被认为在动画开始时可见。

http://api.jquery.com/visible-selector/


$('#list-team-single-container').children(':visible');

该行代码将返回所有可见的#list-team-single-container 子元素。

$('#list-team-single-container').children(':visible').length;

该行代码将返回可见的#list-team-single-container子元素数

【讨论】:

    【解决方案3】:

    如果没有看到您的标记,很难具体说明,但我想这样做:

    var isVisible = 0;
    
    $('.notme').each( function() {
        if( $(this).is(":visible") {
             isVisible++;
        }
    });
    
    if ( isVisible == 0 )
        // do something
    

    【讨论】:

    • 您可能想要重构您的示例...error 并不是真正表示该变量的正确方式...visibleItems 也许...给它一个error 变量名称是有点混乱。实际上没有发生错误...
    • 没错,但在我看来,它是可见的而不是隐藏的,是我创建的逻辑中的错误。所以,我把错误。 =)
    • 啊!你去 - 在你的头脑中 - 来阅读你的代码的其他人呢?例子:P
    • 我会用赞成票来贿赂你以更改该变量名;) 只需说声谢谢,我不会用反对票给你邮寄黑名单!哈哈
    猜你喜欢
    • 1970-01-01
    • 2022-12-08
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2020-02-21
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多