gpt4 book ai didi

jquery - 如何在单击时恢复添加/删除类?

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:27 25 4
gpt4 key购买 nike

我正在尝试制作一个带有向上/向下箭头符号的 Accordion div,该符号在单击时会发生变化。当我把它放下时,箭头从下变到上,但没有反转......

代码如下:

accordion: function() {
$('#accordion').find('.accordion-toggle').click(function(){

//expand or collapse this panel
$(this).next().slideToggle('fast');

if($('.accordion-content').is(":visible")){
//console.log('visible');
$(this).find('span').removeClass('icon-arrow-down').addClass('icon-arrow-up');
} else {
//console.log('invisible');
$(this).find('span').removeClass('icon-arrow-up').addClass('icon-arrow-down');
}

//hide the other panels
$('.accordion-content').not($(this).next()).slideUp('fast');
});
},

最佳答案

使用 JQuery Slide 检查其可见性时会遇到问题。与 .show() 和 .hide() 不同,slide 不会立即改变元素的可见性。因此,您运行函数 .slideToggle(),当元素仍在滑动(又名,仍然可见)时,您询问它是否可见。所以,你总是得到真实的,因此让箭头向下。

要么添加一个类并检查它,如下所示:

$(this).next().slideToggle('fast').toggleClass('im-open-yo');
...
if($('.accordion-content').hasClass("im-open-yo"){
...
$('.accordion-content').not($(this).next()).slideUp('fast').removeClass('im-open-yo');

或者在函数完成回调上运行查询,因为届时元素的可见性将发生变化:

 $(this).next().slideToggle('fast',function(){
if(){...}
});

还有一点要注意,

if($('.accordion-content').is(":visible"))

将检查任何 Accordion 内容是否可见。因此,如果具有箭头类的是整个 Accordion ,那就太好了。但是,如果箭头可用于任何 Accordion 开关,则您需要进行不同的设置。

关于jquery - 如何在单击时恢复添加/删除类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33509121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com