2012-03-04 2 views
0

Я искал ответ на этом форуме, но не смог его найти. вот мой вопрос:JQuery - Аккордеон - активное состояние

Я хочу отключить возможность открытия первой и второй панели моего аккордеона и разрешить ее открывать только тогда, когда захотите. Это похоже на то, что некоторые панели отключены, а некоторые включены.

Я искал с этим кодом:

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

Он работает только на второй панели (== 1), потому что, когда состояние закрыт, он считается ложным, и ложным == 0 для JQuery ,

Я попытался выполнить поиск, если выбранная панель является первой с активным классом ui-state, но слишком поздно, когда класс появляется, панель открывается, и это то, что я хочу предотвратить.

Любая идея?

Благодаря

+0

Вы используете JQuery UI? –

ответ

0

Если вы используете аккордеон JQuery UI, чем то, что вы должны сделать, это использовать changestart событие, чтобы проверить, какой из них щелкнул и делать все, что вы хотите сделать.

Используйте это, чтобы проверить текущее состояние:

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

Yo также может изменить текущий параметр, как это:

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

Вы можете найти события документации здесь: http://jqueryui.com/demos/accordion/#events

И здесь активировать документация метода: http://jqueryui.com/demos/accordion/#method-activate

+0

Спасибо, но это то, что я использую в своем коде. Проблема заключается в том, что я не могу dertermine, если щелчок на панели является первым или нет, потому что false считается 0. – user1247956

+0

@ user1247956 Я исправил свой ответ. Проверьте это. –

+0

спасибо, но я не знаю, как использовать uu.newHeader // объект jQuery, активированный заголовок. Не могли бы вы помочь мне с немного кода? – user1247956

0

Если я хочу только принять меры, когда расширяется:

var active = $(this.container).accordion('option', 'active'); 
if (!active && $.type(active) === 'boolean') { 
    //No action 
    return; 
} 
//Loading some data inside accordion content 
Смежные вопросы