2012-02-15 252 views
9

我有一个标题手风琴这样jQuery的手风琴 - OnCollapse和OnExpand事件

<div class="accordion" id="accordion_acquired_services"> 
    <h3><a href="#">Acquired services</a></h3> 
    <table id="tbl_acquired_services"> 
     <tbody></tbody> 
    </table> 
</div> 

我想什么是绑定在手风琴开放和手风琴接近事件...

其实我想达成的目标是做一个Ajax请求,将在每次扩张时填充手风琴的内容...

奇怪的是没有onExpand/onCollapse事件

到目前为止,我有这个

$("#accordion_acquired_services").bind("accordionchange", function(event, ui) { 
    $('#tbl_acquired_services').html(''); 
    //trigger ajax 
}); 

但触发两个场合,当它崩溃,当它展开......我怎么知道哪个是哪个?

+0

好的,找到它了。我只需要检查手风琴是否具有活动状态类。就像这样:var opened = $(this).find('。ui-state-active')。length; – 2012-02-15 11:38:35

+0

使用changestart事件。见http://jqueryui.com/demos/accordion/#event-changestart – 2012-02-15 11:39:52

+0

请再次阅读我的问题。问题不在触发事件时发生,而在打开(展开)或关闭(折叠)时如何获取值。我已经知道了;) – 2012-02-15 11:45:50

回答

2

尝试这种解决方案:

var opened = $(this).find('.ui-state-active').length; 
2

可以使用change事件和active选项。像这样:

$('#accordion').bind('accordionchange', 
    function() { 
     alert('Active tab index: ' + $(this).accordion('option', 'active')) 
    }); 
12

时间变化,所以是jQuery。复制/粘贴从thread

$("#accordion").accordion({ activate: function(event, ui) { 
      alert(ui.newHeader.text()); 
    } 
}); 

另一个事件:

$("#accordion").accordion({ beforeActivate: function(event, ui) { 
     alert(ui.newHeader.text());   
    } 
    }); 

take a look at jQuerys docs更多细节

2

这里有2码注意

1.Show 2.Shown 3 。隐藏 4.隐藏

因此,代码因此,如果我们使用隐藏和显示手风琴菜单内容关闭后,我们可以触发或开拓完全

$('#accordion').on('shown.bs.collapse', function() { 
//after menu opens 
}); 

$('#accordion').on('hidden.bs.collapse', function() { 
//after menu closes 
}); 
+1

寻找这个很长一段时间。谢谢..:) – 2017-09-22 05:16:54

0

this SO post,jQuery的没有按”去下面

$('#accordion').on('show.bs.collapse', function() { 
//on clicking the accordion menu 
}); 

$('#accordion').on('hide.bs.collapse', function() { 
//on clicking the accordion menu 
}); 

以与上述相同的方式显示更改。这是我编写的一个脚本,它与最新的jQuery库一起工作,它将在打开时获取手风琴的ID并使用该哈希更新URL。

$(accordionSelText).accordion({ 
     activate: function(event, ui) { 

      var accordionId=ui.newHeader.closest('.accordion').attr('id'); // Grabs the id of the accordion 

      try { 
        if (accordionId) { 
         window.location.hash = accordionId; 
         console.log('Active accordion index: ' + accordionId); 
        } 
      }catch(e){} 
     } 
    });