Wiem, że to konkretne pytanie zadawano już wcześniej , ale nie uzyskuję żadnych wyników przy użyciu bind()
zdarzenia we jQuery UI Tabs
wtyczce.
Potrzebuję tylko index
nowo wybranej karty, aby wykonać akcję po kliknięciu karty. bind()
pozwala mi podłączyć się do wybranego zdarzenia, ale moja zwykła metoda uzyskiwania aktualnie wybranej karty nie działa. Zwraca poprzednio wybrany indeks kart, a nie nowy:
var selectedTab = $("#TabList").tabs().data("selected.tabs");
Oto kod, którego próbuję użyć, aby uzyskać aktualnie wybraną kartę:
$("#TabList").bind("tabsselect", function(event, ui) {
});
Kiedy używam tego kodu, obiekt ui wracaundefined
. Z dokumentacji wynika, że powinien to być obiekt, którego używam do podpięcia się do nowo wybranego indeksu za pomocą ui.tab. Próbowałem tego na pierwszej tabs()
rozmowie, a także samodzielnie. Czy ja tu robię coś złego?
źródło
Jeśli chcesz uzyskać indeks tabulatorów spoza kontekstu zdarzenia tabs, użyj tego:
Aktualizacja: od wersji 1.9 „wybrane” zmienia się na „aktywne”
źródło
Aktualizacja! Uwaga: w nowszych wersjach jQueryUI (1.9+),
ui-tabs-selected
został zastąpiony przezui-tabs-active
. !!!Wiem, że ten wątek jest stary, alenie wspomniałem o tym, jak uzyskać „wybraną kartę” (aktualnie rozwijany panel) z innego miejsca niż „zdarzenia na karcie”. Mam prosty sposób ...Aby łatwo uzyskać indeks, istnieje oczywiście sposób wymieniony na stronie ...
Możesz jednak użyć mojej pierwszej metody, aby uzyskać indeks i wszystko, co chcesz w tym panelu, całkiem łatwo ...
PS. Jeśli użyjesz zmiennej iframe, a następnie .find ('. Ui-tabs-panel: not (.ui-tabs-hide)'), łatwo będzie to zrobić również dla wybranych zakładek w ramkach. Pamiętaj, jQuery wykonał już całą ciężką pracę, nie ma potrzeby odkrywania koła na nowo!
Pojawiło się pytanie: „A jeśli w widoku jest więcej niż jeden obszar zakładek?” Ponownie, pomyśl prosto, użyj tej samej konfiguracji, ale użyj identyfikatora, aby określić, które karty chcesz zdobyć.
Na przykład, jeśli masz:
I chcesz, aby bieżący panel drugiej karty był ustawiony:
A jeśli chcesz zakładkę RZECZYWISTE, a nie panel (naprawdę łatwe, dlatego wcześniej o tym nie wspominałem, ale przypuszczam, że teraz będę, żeby być dokładnym)
Pamiętaj, że jQuery wykonał całą ciężką pracę, nie myśl tak mocno.
źródło
Jeśli używasz interfejsu użytkownika JQuery w wersji 1.9.0 lub nowszej, możesz uzyskać dostęp do ui.newTab.index () wewnątrz swojej funkcji i uzyskać to, czego potrzebujesz.
We wcześniejszych wersjach użyj ui.index .
źródło
źródło
Kiedy próbujesz uzyskać dostęp do obiektu interfejsu użytkownika? interfejs użytkownika będzie niezdefiniowany, jeśli spróbujesz uzyskać do niego dostęp poza zdarzeniem bind. Ponadto, jeśli ta linia
jest uruchamiany w takim przypadku:
selectedTab będzie odpowiadać bieżącej karcie w tym momencie („poprzedniej”). Dzieje się tak, ponieważ zdarzenie „tabsselect” jest wywoływane, zanim kliknięta karta stanie się bieżącą kartą. Jeśli nadal chcesz to zrobić w ten sposób, użycie opcji „tabsshow” spowoduje, że selectedTab będzie równe klikniętej karcie.
Wydaje się to jednak zbyt skomplikowane, jeśli chcesz tylko indeksu. ui.index z poziomu zdarzenia lub $ ("# TabList"). tabs (). data ("selected.tabs") poza wydarzeniem powinno wystarczyć.
źródło
zmieniło się to w wersji 1.9
coś jak
powinien być używany. To działa dobrze dla mnie ;-)
źródło
Jeśli ktoś próbował uzyskać dostęp do kart z elementu iframe, możesz zauważyć, że nie jest to możliwe. Karta
div
nigdy nie jest oznaczana jako wybrana, tylko jako ukryta lub nieukryta. Sam link jest jedynym elementem oznaczonym jako wybrany.Poniższe informacje podają
href
wartość linku, która powinna być taka sama, jak identyfikator kontenera kart:Powinno to również działać zamiast:
$tabs.tabs('option', 'selected');
Jest to lepsze w tym sensie, że zamiast po prostu pobrać indeks karty, podaje rzeczywisty identyfikator karty.
źródło
najłatwiej to zrobić
i dla indeksu
źródło
W przypadku, gdy znajdziesz Aktywną kartę Indeks, a następnie wskaż Aktywną kartę
Najpierw pobierz indeks aktywny
Następnie używając klasy css pobierz panel zawartości zakładki
teraz zawinął go w obiekt jQuery, aby go dalej używać
tutaj chcę dodać dwie informacje, które klasa
.ui-tabs-nav
jest związana z nawigacją i.ui-tabs-panel
jest skojarzona z panelem zawartości karty. w tym linku demo w witrynie jquery ui zobaczysz, że ta klasa jest używana - http://jqueryui.com/tabs/#manipulationźródło
wtedy będziesz miał indeks zakładki od 0
prosty
źródło
Spróbuj wykonać następujące czynności:
źródło
Poniższy kod załatwia sprawę. Ustawia zmienną indeksu nowo wybranej karty
źródło
Poniżej możesz zamieścić odpowiedź w swoim następnym poście
źródło
Innym sposobem uzyskania indeksu wybranej karty jest:
źródło
W zmiennej url otrzymasz HREF / URL aktualnej karty
źródło
Możesz go znaleźć poprzez:
źródło
weź ukrytą zmienną, taką jak
'<input type="hidden" id="sel_tab" name="sel_tab" value="" />'
i na każdym zdarzeniu onclick napisz kod, taki jak ...możesz uzyskać wartość „sel_tab” na opublikowanej stronie. :) , prosty !!!
źródło
Jeśli chcesz się upewnić, że
ui.newTab.index()
jest dostępny we wszystkich sytuacjach (zakładki lokalne i zdalne), wywołaj to w funkcji aktywuj, jak mówi dokumentacja :http://jsfiddle.net/7v7n0v3j/
źródło
źródło