2012-03-04 53 views
0

我在这个论坛上搜索了答案,但一直未能找到答案。 这是我的问题:Jquery - Accordion - active state

我想禁用打开我的手风琴的第一和第二个窗格的可能性,并允许它只在需要时打开。这就像使一些窗格被禁用,一些启用。

我已经搜查与此代码:

$("#accordion").bind("accordionchangestart", function(event, ui) {     
    var active = $(this).accordion("option", "active"); 
     if(active == 0)||(active == 1)){ 
    preventDefault(); 
    }        
}); 

它仅适用于第二个窗格(== 1),因为当国家是封闭的,它被认为是假的,假== 0的jQuery 。

我试过搜索如果所选窗格是第一个与ui-state-active类,但是这太晚了,当类出现,窗格打开,这就是我想要阻止。

有什么想法?

感谢

+0

你使用jQuery UI? – 2012-03-04 10:39:40

回答

0

如果您正在使用jQuery UI的手风琴不是你应该做的是使用changestart事件检查被点击其中一个,做任何你想做的事情。

使用此键来查看当前的状态:

$("#accordion").accordion({changestart: function(event, ui) { 
     alert(ui.newHeader[0].textContent); 
}}); 

呦也可以改变当前选项是这样的:

$("#accordion").accordion("activate", 3); 

你可以找到事件的文档在这里: http://jqueryui.com/demos/accordion/#events

而且这里是激活方法文档: http://jqueryui.com/demos/accordion/#method-activate

+0

谢谢,但这就是我在我的代码中使用的。 问题是,我不能dertermine如果窗格点击是第一个或不因为false被认为是0. – user1247956 2012-03-04 10:53:54

+0

@ user1247956我更正了我的答案。一探究竟。 – 2012-03-04 10:58:50

+0

谢谢,但我不知道如何使用ui.newHeader // jQuery对象,激活标题。你能帮我一点代码吗? – user1247956 2012-03-04 11:02:29

0

如果我只想采取行动扩大时:

var active = $(this.container).accordion('option', 'active'); 
if (!active && $.type(active) === 'boolean') { 
    //No action 
    return; 
} 
//Loading some data inside accordion content