2011-11-05 9 views

Odpowiedz

10
$('#tabs').tabs({ 
    select: function(event, ui) { // select event 
     $(ui.tab); // the tab selected 
     ui.index; // zero-based index 
    }, 
    show: function(event, ui) { // show event 
     $(ui.tab); // the tab shown 
     ui.index; // zero-based index 
    } 
}); 

Demo


Lub, jeśli nie chcą wiązać nasłuchiwania zdarzeń o inicjalizacji można powiązać je tak:

$('#tabs') 
    .bind('tabsselect', function(event, ui) { // select event 
     $(ui.tab); // the tab selected 
     ui.index; // zero-based index 
    }) 
    bind('tabsshow'. function(event, ui) { // show event 
     $(ui.tab); // the tab shown 
     ui.index; // zero-based index 
    }); 
+0

Hej Czy mógłbyś zasugerować co jest lepsze między tymi dwoma? –

+0

@HardikMishra Proponuję pierwszą, ponieważ nie zostanie ona zerwana, jeśli nazwy wydarzeń w jakiś sposób zostaną zmienione w przyszłości! – Shef

+2

To już nie działa od 1.9, ui.index jest niezdefiniowane. –

35

Można to wykorzystać do znajdź

var $tabs = $('#tab').tabs(); 
var selected = $tabs.tabs('option', 'selected'); 

Z JQuery 1,9 na

var $tabs = $('#tab').tabs(); 
var selected = $tabs.tabs('option', 'active'); 
+14

+1 za pokazanie, jak znaleźć wybraną kartę poza pokazem lub wybierz wydarzenia. Nie tego, co zadał mi OP, ale tego, co musiałem wiedzieć. – davidethell

2

Właśnie to realizowane w jednym z moich projektów:

var lastTab = 0; // global variable 

$(function() { 
    $('#tabs').tabs({ 
     select: function(event, ui) { 
      lastTab = ui.index; 
     } 
    }); 
}); 

A potem nigdzie indziej w kodzie można po prostu odwołać lastTab.

1

dla jQuery 1.9 lub nowszy ...

$('#tabs').tabs({ 
    activate: function(event, ui) { 
     ui.newTab.index(); // zero-based index 
    } 
});