2010-11-01 2 views
1

Я использую jQuery UI 1.8.5 tabs plugin, с возможностью складывания: истинная конфигурация. Мне нужно вызвать функцию после того, как вкладка свернута, чтобы добавить класс css. Кто-нибудь знает как?jQuery UI tabs, select/unselect (collapse) events

ответ

1

Вы можете проверить, если ui-tabs-selected класс существует по щелчку. Предполагая, что вы используете стандартную разметку:

// in your click event 
var selected_exists = $('#yourTabBox') 
    .children('ul.ui-tabs-nav') 
    .children('li.ui-tabs-selected') 
    .length; 

if (selected_exists) { 
    // Nothing is collapsed 
} else { 
    // collapsed 
} 

Это идеально подходит для select события.

+0

@ Stephen ... он может показать нам, что он пробовал или что-то еще? ';)' ... конечно было бы хорошо узнать, что он борется? – jcolebrand

+1

@drachenstern: Согласен. Если то, что мы описали, не работает, нам нужно будет увидеть некоторые примеры того, что было пробовано, наряду с некоторой разметкой. – Stephen

+1

Хороший ответ (+1, если у меня остались голоса!). Просто отметим, что в событии 'select',' this' является внешним элементом div, поэтому ваш код может быть уменьшен до '$ (this) .children ('ul.ui-tabs-nav> li.ui-tabs-selected «) .length'. Немного быстрее и гибче. – lonesomeday

1

А как насчет show event не подходит для этого? Потому что вы не знаете, какой из них был скрыт?

Возможно, даже select event может быть тем, что вы хотите.

используя 'tabsselect' событие:

$(".selector").tabs({ 
    collapsible: true, 
    select: function(event, ui) 
    { 
     var prevSelectedIndex = $(".selector").tabs('option', 'selected'); 
     var nextSelectedIndex = ui.index; 

     if(prevSelectedIndex === -1) 
     { 
      // It was previously collapsed and the user is now opening 
      // tab at index: nextSelectedIndex 
     } 
     else if(prevSelectedIndex === nextSelectedIndex) 
     { 
       // The user has clicked on the currently opened 
       // tab and it is collapsing 
     } 
    } 
}); 
+1

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