如果类被更改,jQuery会执行代码

时间:2015-04-01 14:38:49

标签: javascript jquery html css

我试图检查其他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将类从is-hidden更改为is-visible,反之亦然。所以我的代码没有看到任何变化,我有分组显示所有图像。如果有帮助,可以链接到该页面my site

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

  • 我们你改变类别我需要隐藏元素(宽度: 0)没有li&gt; ul&gt; li class =&#34; is-visible&#34;

  • 3 个答案:

    答案 0 :(得分:3)

    您可以使用hasClass()推荐为it's fastest )来检测元素是否具有类:

    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'
        });
    }
    

    答案 1 :(得分:0)

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

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

    答案 2 :(得分:0)

    支票

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

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

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

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

    其他选项是使用返回布尔值的is()hasClass()