如果有课程,请添加和删除课程

时间:2019-12-26 04:22:49

标签: javascript jquery

如果子div中存在某个类,则我正在向父div添加一个类。但同时,如果子div中没有​​该类,则要从父div中删除该类。

我使用了下面的代码,添加了类,但是当子div中不存在该类时,它不会从父类中删除该类:

jQuery(function($){
    if(jQuery(".mtsnb-top").hasClass('mtsnb-shown')) {
        jQuery("body").addClass('test');
    } else if (jQuery(".mtsnb-top").hasClass('mtsnb-hidden')) {
        jQuery("body").removeClass('test');
    }
});

不确定这是什么问题。

我还添加了toggleclass方法。

jQuery(function($){
    if(jQuery(".mtsnb-top").hasClass('mtsnb-shown')) {
        jQuery("body").toggleClass('test');
    }
});

但这也不符合我的要求。

我希望,如果子div中存在类 mtsnb-top ,则父div应当具有类 test ,如果类 mtsnb-top ,然后要从父div中删除的类 test

有人可以指出以上代码在哪里错误吗?

作为参考,this is页面的网址,我指的是顶部的通知栏。如果栏显示,想向body标签添加一个类。如果那是隐藏的,则该类将从体内删除。

2 个答案:

答案 0 :(得分:0)

您可以通过将if/else方法与第二个参数一起使用来消除toggleClass语句,如果第二个参数为true,则添加该类,否则删除该类:

var childHasShownClass = jQuery('.mtsnb-top').hasClass('mtsnb-shown');
jQuery('body').toggleClass('test', childHasShownClass);

当然,这意味着body元素将具有test类,如果子元素具有mtsnb-shown类,否则就不会(即使mtsnb-hidden也不存在)在孩子身上)。

我看到的唯一其他潜在问题是,第一个代码示例中的toggleCLass应该是toggleClass。小写的l而不是L,除非那只是一个错字,并且您的实际代码是正确的。

答案 1 :(得分:0)

找到具有“ mtsnb-top”类的子元素的数量,然后添加/删除“ test”类。

if(jQuery('.parent').find('.mtsnb-top').length) {
    jQuery('.parent').addClass('test');
} else {
    jQuery('.parent').removeClass('test');
}