jQuery UI Accordion - 打开/关闭面板的“If Statement”

时间:2016-01-23 22:55:52

标签: javascript jquery jquery-ui accordion

我有以下代码将任何点击的手风琴面板移动到页面顶部。但是,我默认打开了一些手风琴面板,当有人关闭时,我不希望打开的手风琴面板动画。因此,我希望“滚动到顶部”代码仅适用于封闭面板。所以我想我需要在某种“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>

1 个答案:

答案 0 :(得分:1)

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

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