Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery中添加和删除类_Javascript_Jquery_Addclass_Removeclass - Fatal编程技术网

Javascript 在jquery中添加和删除类

Javascript 在jquery中添加和删除类,javascript,jquery,addclass,removeclass,Javascript,Jquery,Addclass,Removeclass,我正在尝试使用slidetoggle和slideDown显示/隐藏我的div元素。它工作得非常好。 现在我想做的是,我只想addClass“visible divs”添加到visible div,并在它们隐藏时removeClass 问题是,该类已成功添加,但在向上滑动以隐藏它们时,它不会删除该类。我做错了什么 $(“.OffersContainer>div:gt(0)”).hide(); $(“.OffersContainer>span”)。单击(函数(){ this.clickCount=

我正在尝试使用
slidetoggle
slideDown
显示/隐藏我的div元素。它工作得非常好。 现在我想做的是,我只想
addClass
“visible divs”添加到visible div,并在它们隐藏时
removeClass

问题是,该类已成功添加,但在向上滑动
以隐藏它们时,它不会删除该类。我做错了什么

$(“.OffersContainer>div:gt(0)”).hide();
$(“.OffersContainer>span”)。单击(函数(){
this.clickCount=(this.clickCount | | 0)+1
var command=this.clickCount%3==0?'slideToggle':'slideDown';
$(this).this(this.clickCount%3==1?“div:lt(3)”:“div:gt(0)”)[command]();
$('.pan-box').filter(':visible').addClass(“visible divs”);
$('.pan-box').filter(':hidden').removeClass(“可见divs”);
});

A.
B
C
D
E
显示更多

要使其工作,您需要在动画完成后选择
:visible
/
:hidden
元素。为此,请使用回调函数参数:

$(".OffersContainer > span").click(function() {
    this.clickCount = (this.clickCount || 0) + 1
    var command = this.clickCount % 3 === 0 ? 'slideToggle' : 'slideDown';
    $(this).siblings(this.clickCount % 3 === 1 ? "div:lt(3)" : "div:gt(0)")[command](function() {
        $('.pan-box').filter(':visible').addClass("visible-divs");
        $('.pan-box').filter(':hidden').removeClass("visible-divs");
    });
});


顺便说一句,更改隐藏元素上的类有什么意义?根据定义,这种效果是看不到的。如果您不想等待动画完成,因为您已经知道要隐藏或显示哪些选项,那么您可以仅使用
:hidden
选择器,而不必使用此代码:

$(“.OffersContainer>div:gt(0)”).hide();
$(“.OffersContainer>span”)。单击(函数(){
this.clickCount=(this.clickCount | | 0)+1
var command=this.clickCount%3==0?'slideToggle':'slideDown';
$(this).this(this.clickCount%3==1?“div:lt(3)”:“div:gt(0)”)[command]();
console.log(this.clickCount%3*3-1);
$('.pan-box:lt(+(this.clickCount%3*3)+')).addClass(“可见divs”);
$('.pan-box:gt(+(this.clickCount%3*3)+')).removeClass(“可见divs”);
});

A.
B
C
D
E
显示更多

请在我的代码中将相关代码添加到OPLater中,我已经在那些具有class
可见div的div上应用了一些逻辑。因此,一旦div被隐藏,我就需要去掉这个类。确切地说,我的观点是,你可以只使用
:visible
,而不必维护类属性的状态。他还可以在动画之前添加/删除类,我想这是他想要的。否则,他需要将所有传入的代码放在回调函数中。@skobaljic他最初是这样做的,这就是为什么
:hidden
元素从未删除过它们的类。如何删除?在动画完成之前,元素将一直可见,因此您必须使用回调