【问题标题】:Jquery check if a div(several divs with same class) contains a div with class onJquery检查一个div(具有相同类的几个div)是否包含一个具有类的div
【发布时间】:2014-07-09 09:43:28
【问题描述】:

我有三个带有 UserDetail 类的 div。如果一个 div 不包含 div.info 则必须隐藏 div.UserDetail

评论更新:

我试过这个:

var childInfo=$('div.UserDetail').find("div.info").size(); 
if(childInfo==0) $('div.UserDetail').hide(); 

这不起作用,因为所有 div 都包含相同的类名,而其他两个 div 有子 div class=info

【问题讨论】:

  • HTML?示例代码你试过了吗?
  • 我试过 var childInfo=$('div.UserDetail').find("div.info").size(); if(childInfo==0) $('div.UserDetail').hide();这并不是因为所有 div 都包含相同的类名,而其他两个 div 具有子 div class=info。
  • 已添加答案(仅使用下面的 jQuery 选择器)。

标签: php jquery html


【解决方案1】:

将:has 与:not 选择器一起使用:

JSFiddle:http://jsfiddle.net/TrueBlueAussie/5pbap/

$('.UserDetail:not(:has(.info))').hide()

或全部(如果您关心 div):http://jsfiddle.net/TrueBlueAussie/5pbap/1/

$('div.UserDetail:not(:has(div.info))').hide()

【讨论】:

    【解决方案2】:

    我认为这可能有效

    $.each($('div.UserDetail'), function(i, value){
         if($(value).find('div.info').length == 0)  
            {
              $(value).hide();            
            }
    });
    

    【讨论】:

    • 这确实有效(尽管可以稍微简化一下)。使用filter 会再次使其变得更简单,但只需使用 jQuery :not 和 :has 选择器即可完成。
    • @TrueBlueAussie 真的,我喜欢你精确的 sn-p。谢谢你的知识。
    • +1 无论如何都要让它第一次工作(所有其他 each 答案的逻辑错误)。
    【解决方案3】:

    jsFiddle

    HTML

    <div class="userDetails">1</div>
    <div class="userDetails">2<div class="info"></div></div>
    <div class="userDetails">3</div>
    

    JS

    $.each( $( "div.userDetails" ), function( i, div ) {
        if ( $( div ).find( "div.info" ).length == 0 ) {
            $( div ).hide();
        }
    } );
    

    【讨论】:

    • 你的逻辑颠倒了。它需要隐藏所有 不 包含子 div 的 div。您的示例应该只显示 div 2。
    【解决方案4】:
    $(".UserDetail").each(function (index) {
            if ( $(this).find('div.info').length < 0) {
                $(this).hide();
            }
        });
    

    【讨论】:

    • 这个根本不起作用:jsfiddle.net/TrueBlueAussie/5pbap/2(啊,你也有一个错字length - 虽然仍然不起作用)
    • 仍然不起作用,因为length 不是函数
    • 抱歉,() 太快了
    • 现在您只需反转逻辑即可完成:) 它应该仅显示具有匹配子 div 的 div。
    • -1:当然是漫长的一天,但在 4 次尝试后仍然错误(并且可以使用 JSFiddles 进行检查),您应该能够使用所有提示来完成此操作。对不起:(
    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多