jQuery在类更改时执行代码

jQuery do code if class is changed

本文关键字:执行 代码 jQuery      更新时间:2023-09-26

我试图检查其他具有类的li中的li是否可见,在这种情况下什么都不做,但如果不添加样式宽度:0px。

if (jQuery("li:has(li.is-visible)")){
    //nothing at this moment
}
else {
    jQuery('ul.cd-gallery li').css({'width' : '0px'});
}

代码的html部分

<ul class="cd-item-wrapper">
        <li data-type="sve" class="is-visible">
        <img class="img-reponsive" src="someimg.jpg" alt="Jabuka" height="150" />
        </li>
        <li data-type="proizvodi" class="is-hidden">
            <img class="img-reponsive" src="someimg.jpg" alt="Jabuka" height="150" />
        </li>
        <li data-type="vocnaci" class="is-hidden">
            <img class="img-reponsive" src="someimg.jpg" alt="Jabuka" height="150" />
        </li>                       
    </ul>
</li>

但我使用jQuery将类从"隐藏"更改为"可见",反之亦然。所以我的代码没有看到任何更改,并且我有group-all来显示所有图像。如果它有帮助,这里是链接到该页面我的网站

我的Jquery代码很好,至少我认为是这样,但问题是(如果你在现场检查元素)你看到了一堆

  • ,我们改变了类别,我需要隐藏没有li>ul>li class="可见"的元素(宽度:0)
  • 您可以通过使用hasClass(),推荐它是最快的)来检测元素是否有类:

    if ( $("li > ul > li").hasClass('is-visible')) {
        //nothing at this moment
    } else {
        $('ul.cd-gallery li').css({
            'width', '0px'
        });
    }
    

    is():

    if ( $("li > ul > li").is('.is-visible')) {
        //nothing at this moment
    } else {
        $('ul.cd-gallery li').css({
            'width', '0px'
        });
    }
    

    在jquery中使用.hasClass()。如果类被分配给元素,即使其他类也是,.hasClass()方法也将返回true

    if(jQuery("li").hasClass('is-visible')){
    }
    

    检查

    if (jQuery("li:has(li.is-visible)")){
    

    总是为true,因为它返回一个jQuery对象。物体是真实的。它不像getElementById那样返回一个假值。你需要检查一下长度。

    if (jQuery("li:has(li.is-visible)").length){
    

    零是假的,任何数字都是真的。

    另一种选择是使用返回布尔值的is()hasClass()