Ich weiß , dass diese spezifische Frage wurde vor gefragt , aber ich bin keine Ergebnisse bekommen die Verwendung bind()
Ereignis auf dem jQuery UI Tabs
Plugin.
Ich brauche nur die index
der neu ausgewählten Registerkarte, um eine Aktion auszuführen, wenn auf die Registerkarte geklickt wird. bind()
Ermöglicht es mir, mich in das Auswahlereignis einzuhängen, aber meine übliche Methode zum Abrufen der aktuell ausgewählten Registerkarte funktioniert nicht. Es gibt den zuvor ausgewählten Registerkartenindex zurück, nicht den neuen:
var selectedTab = $("#TabList").tabs().data("selected.tabs");
Hier ist der Code, den ich verwenden möchte, um die aktuell ausgewählte Registerkarte abzurufen:
$("#TabList").bind("tabsselect", function(event, ui) {
});
Wenn ich diesen Code verwende, kommt das UI-Objekt zurückundefined
. In der Dokumentation sollte dies das Objekt sein, mit dem ich mich mit ui.tab in den neu ausgewählten Index einbinde. Ich habe dies beim ersten tabs()
Anruf und auch alleine versucht . Mache ich hier etwas falsch
quelle
Wenn Sie den Registerkartenindex von außerhalb des Kontexts eines Registerkartenereignisses abrufen müssen, verwenden Sie Folgendes:
Update: Ab Version 1.9 wird 'ausgewählt' in 'aktiv' geändert.
quelle
¡¡¡Update! Bitte beachten Sie: In neueren Versionen von jQueryUI (1.9+)
ui-tabs-selected
wurde durch ersetztui-tabs-active
. !!!Ich weiß, dass dieser Thread alt ist, aberetwas, das ich nicht erwähnt habe, war, wie man den "ausgewählten Tab" (derzeit heruntergeklapptes Feld) von einem anderen Ort als den "Tab-Ereignissen" erhält. Ich habe einen einfachen Weg ...Und um den Index einfach zu erhalten, gibt es natürlich den auf der Website aufgeführten Weg ...
Sie könnten jedoch meine erste Methode verwenden, um den Index und alles, was Sie über dieses Panel wollen, ziemlich einfach zu erhalten ...
PS. Wenn Sie eine iframe-Variable verwenden, dann .find ('. UI-tabs-panel: not (.ui-tabs-hide)'), können Sie dies auch für ausgewählte Registerkarten in Frames leicht tun. Denken Sie daran, jQuery hat bereits die ganze harte Arbeit geleistet, ohne das Rad neu erfinden zu müssen!
Es wurde mir die Frage gestellt: "Was ist, wenn die Ansicht mehr als einen Registerkartenbereich enthält?" Denken Sie auch hier einfach, verwenden Sie dasselbe Setup, verwenden Sie jedoch eine ID, um zu identifizieren, welche Registerkarten Sie erhalten möchten.
Zum Beispiel, wenn Sie haben:
Und Sie möchten das aktuelle Bedienfeld des zweiten Registerkartensatzes:
Und wenn Sie die Registerkarte TATSÄCHLICH und nicht das Bedienfeld möchten (ganz einfach, weshalb ich es vorher nicht erwähnt habe, aber ich nehme an, ich werde es jetzt tun, nur um gründlich zu sein).
Denken Sie daran, jQuery hat die ganze harte Arbeit geleistet, denken Sie nicht so hart.
quelle
Wenn Sie JQuery UI Version 1.9.0 oder höher verwenden, können Sie in Ihrer Funktion auf ui.newTab.index () zugreifen und erhalten, was Sie benötigen.
Für frühere Versionen verwenden Sie ui.index .
quelle
quelle
Wann versuchen Sie, auf das UI-Objekt zuzugreifen? ui ist undefiniert, wenn Sie versuchen, außerhalb des Bindungsereignisses darauf zuzugreifen. Auch wenn diese Zeile
wird in der Veranstaltung wie folgt ausgeführt:
selectedTab entspricht der aktuellen Registerkarte zu diesem Zeitpunkt (der "vorherigen"). Dies liegt daran, dass das Ereignis "tabsselect" aufgerufen wird, bevor die angeklickte Registerkarte zur aktuellen Registerkarte wird. Wenn Sie dies dennoch auf diese Weise tun möchten, führt die Verwendung von "tabsshow" dazu, dass selectedTab der angeklickten Registerkarte entspricht.
Dies scheint jedoch zu komplex zu sein, wenn Sie nur den Index wünschen. ui.index innerhalb des Ereignisses oder $ ("# TabList"). tabs (). Daten ("selected.tabs") außerhalb des Ereignisses sollten alles sein, was Sie benötigen.
quelle
Dies änderte sich mit Version 1.9
etwas wie
sollte benutzt werden. Das funktioniert gut für mich ;-)
quelle
Falls jemand versucht hat, innerhalb eines Iframes auf Registerkarten zuzugreifen, stellen Sie möglicherweise fest, dass dies nicht möglich ist. Die
div
Registerkarte wird niemals als ausgewählt markiert, nur als ausgeblendet oder nicht ausgeblendet. Der Link selbst ist das einzige Stück, das als ausgewählt markiert ist.Im Folgenden erhalten Sie den
href
Wert des Links, der mit der ID Ihres Registerkartencontainers übereinstimmen sollte:Dies sollte auch funktionieren anstelle von:
$tabs.tabs('option', 'selected');
Es ist in dem Sinne besser, dass Sie nicht nur den Index der Registerkarte abrufen, sondern auch die tatsächliche ID der Registerkarte erhalten.
quelle
Der einfachste Weg, dies zu tun, ist
und für den Index
quelle
Falls Sie Active Tab Index finden und dann auf Active Tab zeigen
Holen Sie sich zuerst den aktiven Index
Rufen Sie dann mit der CSS-Klasse das Inhaltsfenster der Registerkarte auf
Wickeln Sie es jetzt in ein jQuery-Objekt, um es weiter zu verwenden
Hier möchte ich zwei Informationen hinzufügen, die der Klasse
.ui-tabs-nav
für die Navigation zugeordnet sind und.ui-tabs-panel
mit dem Inhaltsbereich der Registerkarte verknüpft sind. In dieser Link-Demo auf der Website von jquery ui sehen Sie, dass diese Klasse verwendet wird - http://jqueryui.com/tabs/#manipulationquelle
dann haben Sie den Index der Registerkarte von 0
einfach
quelle
Versuche Folgendes:
quelle
Ich fand, dass der folgende Code den Trick macht. Legt eine Variable des neu ausgewählten Registerkartenindex fest
quelle
Sie können die Antwort unten in Ihrem nächsten Beitrag posten
quelle
Eine andere Möglichkeit, den ausgewählten Registerkartenindex abzurufen, ist:
quelle
In der URL- Variablen erhalten Sie die HREF / URL der aktuellen Registerkarte
quelle
Sie finden es über:
quelle
Nehmen Sie eine versteckte Variable wie
'<input type="hidden" id="sel_tab" name="sel_tab" value="" />'
und schreiben Sie auf das Onclick-Ereignis jeder Registerkarte Code wie ...Sie können den Wert von 'sel_tab' auf der veröffentlichten Seite abrufen. :), einfach !!!
quelle
Wenn Sie sicherstellen möchten, dass
ui.newTab.index()
es in allen Situationen verfügbar ist (lokale und Remote-Registerkarten), rufen Sie es in der Aktivierungsfunktion auf , wie in der Dokumentation angegeben :http://jsfiddle.net/7v7n0v3j/
quelle
quelle