2010-11-01 4 views

Répondre

1

Vous pouvez vérifier si la classe ui-tabs-selected existe en cliquant dessus. En supposant que vous utilisez le balisage standard:

// 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 
} 

C'est parfait pour l'événement select.

+0

@Stephen ... pense qu'il pourrait nous montrer ce qu'il a essayé ou quelque chose? ';)' ... ça serait bien de savoir ce qu'il se bat hein? – jcolebrand

+1

@drachenstern: D'accord. Si ce que nous avons décrit ne fonctionne pas, nous aurons besoin de voir quelques exemples de ce qui a été essayé, ainsi que des balises. – Stephen

+1

Bonne réponse (+1 s'il me reste des votes!). Juste pour noter que dans l'événement 'select',' this' est un élément div externe, donc votre code pourrait être réduit à $ (this) .children ('ul.ui-tabs-nav> li.ui-tabs-selected ') .length'. Légèrement plus rapide et plus flexible. – lonesomeday

1

Qu'en est-il le show event ne fonctionnera pas pour cela? Parce que vous ne savez pas lequel était caché?

Peut-être même le select event pourrait être ce que vous voulez.

en utilisant l'événement '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

Je suis tombé sur ce problème et j'ai utilisé votre réponse. J'ai ajouté un extrait de code pour montrer comment je l'ai utilisé pour référence future. –

Questions connexes