【问题标题】:jQuery UI Accordion - "If Statement" for Open/Closed PanelsjQuery UI Accordion - 打开/关闭面板的“If 语句”
【发布时间】:2016-01-23 22:55:52
【问题描述】:

我有下面的代码将任何点击的手风琴面板移动到页面顶部。但是,我默认打开了一些手风琴面板,我不希望打开的面板在有人关闭它们时动画。因此,我希望“滚动到顶部”代码仅适用于封闭面板。所以我想我需要在某种“if 语句”中检测打开/关闭状态。知道如何做到这一点吗?

<div id="accordion">

<!--Open panel by default-->
<h3 class="accordion">Question</h3>
<div class="content">
<p>text</p>
</div>

<!--Closed panel-->
<h3 class="accordion">Question</h3>
<div class="content">
<p>text</p>
</div>

</div>

<script>
jQuery(function() {
    var defaultPanel = parseInt(getParamFirst('section'));
    jQuery( "#accordion" ).accordion(
        {active: defaultPanel,
        autoHeight: false,
            collapsible: true,
            heightStyle: "content",
            animate: 200}
    ).show(); 
});

//////////////////////////////////////////////////
//Fire the below code only on closed panels
//////////////////////////////////////////////////

jQuery('.accordion').bind('click',function(){
            var self = this;
            setTimeout(function() {
                theOffset = jQuery(self).offset();
                jQuery('body,html').animate({ scrollTop: theOffset.top - 110 });
            }, 200);
});
</script>

【问题讨论】:

    标签: javascript jquery jquery-ui accordion


    【解决方案1】:

    添加.not('.ui-state-active'):

    jQuery('.accordion').not('.ui-state-active').bind('click',function(){
    ...
    

    【讨论】:

    • 感谢您的回复。尽管当我关闭它们时,打开的那些仍然会动画到顶部。嗯
    • 不清楚你到底想要什么。您仅将该动画绑定到默认关闭的面板。当您打开和关闭此类面板时,它会动画。
    • 是的,我不知道。从逻辑上讲,您的解决方案应该有效。我肯定错过了什么。不过感谢您的回复。
    • 请检查Plunk - 在打开时做动画,不要在关闭时做动画,不管是什么默认设置。
    猜你喜欢
    • 2013-05-27
    • 2010-09-27
    • 1970-01-01
    • 2018-06-16
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    相关资源
    最近更新 更多