2012-10-31 12 views
15

Muszę "zresetować" niektóre informacje o stronie w oparciu o wybraną zakładkę w sekcji zakładki jQuery bootstrap.Twitter Bootstrap - Wykonaj akcję na zakładce "pokazany" event

Docs pokazać to wydarzenie, które jest dokładnie to, czego potrzebuję: http://twitter.github.com/bootstrap/javascript.html#tabs

$('a[data-toggle="tab"]').on('shown', function (e) { 
    e.target // activated tab 
    e.relatedTarget // previous tab 
}) 

muszę dostać „href” atrybut e.Target i e.relatedTarget, które jednoznacznie identyfikują te 2 kart i kartę 2 -panele, z którymi są połączone.

Oto mój problem: obiekt e jest obiektem, którego się nie spodziewam lub do którego się przyzwyczaiłem. Nie mogę użyć żadnej z metod jQuery, takich jak e.target.attr('href') - wszystkie normalne metody jquery, do których przywykłem, zniknęły. Próbowałem dostępu do niego jak surowego atrybutu obiektu - e.href i dostał https://127.0.0.1/test?action=view#tab-a" nie #tab-a

mogę kodować obejście z tym - ale ja wyraźnie robi coś złego. Powinien istnieć łatwy sposób, aby bezpośrednio uzyskać #tab-a z e.target - ale nie mogę tego rozgryźć.

+1

Należy zauważyć, że w Bootstrap 3, musimy użyć shown.bs.tab zamiast –

+1

Z bootstrap 3 powinno być 'na ('shown.bs.tab'' zamiast 'on (' shown''. – kalu

+0

Od' e.target' daje ci 'https: //127.0.0.1/test? action = view # tab-a' jak zarządzasz to zadziała? To wciąż nie działa, np. '$ (" https://127.0.0.1/test?action=view#tab-a ")' zwróci 'undefined' lub' Błąd składni, nierozpoznane wyrażenie ... '??? – Jaider

Odpowiedz

26

Zamiast tego spróbuj $(e.target).attr('href').

+0

Dziękuję bardzo. To była dokładna odpowiedź. –

+0

źle, mogę tylko głosować raz, thnx –

1

Jeśli ktoś musi wiedzieć, który zakład jest aktualnie wybrany, bez ręcznego liczenia go w DOM.

Przypadek użycia:, gdy #hrefs są aktualizowane dynamicznie i można przekazywać na indeksie kart.

Funkcja jQuery .index() zwraca liczbę całkowitą wskazującą pozycję pierwszego elementu w obrębie obiektu jQuery względem jego elementów siostrzanych.

var el = jQuery('#some .thing'); // some DOM node that contains tab html structure 
var tab_list = el.find('.tabbable').first().find('a[data-toggle="tab"]'); 
// event namespace ".bs.tab" is important in some versions of Bootstrap 
tab_list.on('shown.bs.tab', function(e){ 

    // zero based index 
    // jQuery function `.index()` returns zero-based DOM "order" index 
    tab_index = $(e.target).parent().index(); 

    // store this index to cookie or somwhere 
    // so that you can show that tab again when user comes back to page 
    // or makes a page refresh (F5) 
}); 
4

późno do partii przez tutaj jest moje zdanie:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { 

    e.currentTarget ... 

}); 

e.currentTarget jest obecny tylko kotwica kliknięciu

+0

Wielkie dzięki! ulepszaliśmy nasz projekt do bootstrap3 z bootstrap2 i został naprawiony !!! – normalUser

0

To wszystko powinno działać.

  1. $(e.target).attr('href');
  2. e.target.hash;
  3. $(this).attr('href');
  4. this.hash