滑动所有分区和;使用jQuery通过一个按钮更改h3类
我有一个简单的手风琴类型的机制,我一直在工作。我熟悉slideUp和slideDown的回调功能,并使用它在动画完成后实现了类的更改 我有两个按钮-一个展开手风琴中的所有div,另一个折叠它们。这很好,当只使用这些按钮来控制手风琴时,类会在正确的时间更改 然而,当我打开一个手风琴(通过点击h3),然后点击按钮折叠所有div时,h3上的类立即改变(因此它的外观) 一定有什么冲突。我相信我的函数也不是我们特别编写的,但如果有任何帮助,我们将不胜感激 谢谢 这是jQuery:滑动所有分区和;使用jQuery通过一个按钮更改h3类,jquery,callback,slider,accordion,slideup,Jquery,Callback,Slider,Accordion,Slideup,我有一个简单的手风琴类型的机制,我一直在工作。我熟悉slideUp和slideDown的回调功能,并使用它在动画完成后实现了类的更改 我有两个按钮-一个展开手风琴中的所有div,另一个折叠它们。这很好,当只使用这些按钮来控制手风琴时,类会在正确的时间更改 然而,当我打开一个手风琴(通过点击h3),然后点击按钮折叠所有div时,h3上的类立即改变(因此它的外观) 一定有什么冲突。我相信我的函数也不是我们特别编写的,但如果有任何帮助,我们将不胜感激 谢谢 这是jQuery: $('.accordio
$('.accordion h3').addClass('closed').next('div').hide();
$('.accordion h3').click( function() {
if ($(this).hasClass('closed')){
$(this).removeClass('closed');
$(this).addClass('open');
$(this).next('div').stop(true,true).slideDown();
} else if ($(this).hasClass('open')){
$(this).next('div').stop(true,true).slideUp('normal', function() {
$(this).prev('h3').removeClass('open');
$(this).prev('h3').addClass('closed');
});
}
});
$('#expand-all').click( function() {
if ($('.accordion h3').hasClass('closed')){
$('.accordion h3').removeClass('closed');
$('.accordion h3').addClass('open');
$('.accordion h3').next('div').stop(true,true).slideDown();
}
return false;
});
$('#collapse-all').click( function() {
if ($('.accordion h3').hasClass('open')){
$('.accordion h3').next('div').stop(true,true).slideUp('normal', function(){
$('.accordion h3').removeClass('open');
$('.accordion h3').addClass('closed');
});
}
return false;
});
以下html已简化,但基本结构相同:
<a id="expand-all" href="#">Expand all</a>
<a id="collapse-all" href="#">Collapse all</a>
<div class="accordion">
<h3>Clickable to trigger dropdown</h3>
<div>This is the hidden content that shows when the h3 is clicked</div>
<h3>Clickable to trigger dropdown</h3>
<div>This is the hidden content that shows when the h3 is clicked</div>
</div>
单击可触发下拉列表
这是单击h3时显示的隐藏内容
单击可触发下拉列表
这是单击h3时显示的隐藏内容
这是因为其中一个手风琴师已经关闭,因此幻灯片已完成,这将调用:
$('.accordion h3').removeClass('open');
$('.accordion h3').addClass('closed');
您不应该执行$('.accordion h3'),而应该更改一个相对值,因此请尝试:
$(this).prev('h3').removeClass('open');
$(this).prev('h3').addClass('closed');
在collapse all slideUp回调中。这是因为其中一个手风琴已经关闭,因此slideUp已完成,这将调用:
$('.accordion h3').removeClass('open');
$('.accordion h3').addClass('closed');
您不应该执行$('.accordion h3'),而应该更改一个相对值,因此请尝试:
$(this).prev('h3').removeClass('open');
$(this).prev('h3').addClass('closed');
在折叠所有slideUp回调中。还有代码:$('.accordion h3').next('div').stop(true,true).slideUp('normal',function(){$(this).prev('h3').removeClass('open');$(this).prev('h3').addClass('closed');});另外,下面是代码:$('.accordion h3').next('div').stop(true,true).slideUp('normal',function(){$(this).prev('h3').removeClass('open');$(this.prev('h3').addClass('closed');});