Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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
滑动所有分区和;使用jQuery通过一个按钮更改h3类_Jquery_Callback_Slider_Accordion_Slideup - Fatal编程技术网

滑动所有分区和;使用jQuery通过一个按钮更改h3类

滑动所有分区和;使用jQuery通过一个按钮更改h3类,jquery,callback,slider,accordion,slideup,Jquery,Callback,Slider,Accordion,Slideup,我有一个简单的手风琴类型的机制,我一直在工作。我熟悉slideUp和slideDown的回调功能,并使用它在动画完成后实现了类的更改 我有两个按钮-一个展开手风琴中的所有div,另一个折叠它们。这很好,当只使用这些按钮来控制手风琴时,类会在正确的时间更改 然而,当我打开一个手风琴(通过点击h3),然后点击按钮折叠所有div时,h3上的类立即改变(因此它的外观) 一定有什么冲突。我相信我的函数也不是我们特别编写的,但如果有任何帮助,我们将不胜感激 谢谢 这是jQuery: $('.accordio

我有一个简单的手风琴类型的机制,我一直在工作。我熟悉slideUp和slideDown的回调功能,并使用它在动画完成后实现了类的更改

我有两个按钮-一个展开手风琴中的所有div,另一个折叠它们。这很好,当只使用这些按钮来控制手风琴时,类会在正确的时间更改

然而,当我打开一个手风琴(通过点击h3),然后点击按钮折叠所有div时,h3上的类立即改变(因此它的外观)

一定有什么冲突。我相信我的函数也不是我们特别编写的,但如果有任何帮助,我们将不胜感激

谢谢

这是jQuery:

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