2012-10-31 9 views
15

Ho bisogno di "ripristinare" alcune informazioni sulla pagina in base alla scheda selezionata in una sezione della scheda jQuery bootstrap.Bootstrap su Twitter - Esegui azione sulla scheda "mostrato" evento

La documentazione mostrare più questo evento, che è esattamente quello che mi serve: http://twitter.github.com/bootstrap/javascript.html#tabs

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

ho bisogno di ottenere l'attributo 'href' del e.Target e e.relatedTarget, che identificano in modo univoco le 2 schede e la scheda 2 -pannelli di contenuto a cui sono collegati.

Ecco il mio problema: l'oggetto e è un oggetto che non mi aspetto o che non sono abituato. Non posso usare nessuno dei metodi jQuery come e.target.attr('href') - tutti i normali metodi jquery a cui sono abituato sono andati. Ho provato accedervi come un attributo dell'oggetto grezzo - e.href, ed ha ottenuto https://127.0.0.1/test?action=view#tab-a" non #tab-a

posso codice una soluzione con questo - ma sto chiaramente facendo qualcosa di sbagliato. Ci dovrebbe essere un modo semplice per ottenere direttamente #tab-a da e.target - ma non riesco a capirlo.

+1

Si noti che in Bootstrap 3, abbiamo bisogno di usare shown.bs.tab invece –

+1

Con bootstrap 3 questo dovrebbe essere 'su ('shown.bs.tab'' invece di 'on (' shown''. – kalu

+0

Poiché' e.target' ti dà questo 'https: //127.0.0.1/test? action = view # tab-a' come gestisci funziona? Perché? e questo ancora non funziona, ad es. '$ (" https://127.0.0.1/test?action=view#tab-a ")' restituirà 'undefined' o 'Errore di sintassi, espressione non riconosciuta ...' ??? – Jaider

risposta

26

Prova $(e.target).attr('href') invece.

+0

Grazie mille. Questa era la risposta esatta. –

+0

troppo male Posso solo votare una volta, grazie –

1

Se qualcuno deve sapere quale indice di tabulazione è attualmente selezionato senza calcolarlo manualmente in DOM.

Caso di utilizzo: quando #hrefs viene aggiornato in modo dinamico e può essere inoltrato in un indice di tabulazione.

jQuery function .index() restituisce integer che indica la posizione del primo elemento all'interno dell'oggetto jQuery relativamente ai relativi elementi di pari livello.

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

in ritardo alla festa da qui è il mio introito:

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

    e.currentTarget ... 

}); 

e.currentTarget è l'ancora corrente appena cliccato

+0

Grazie mille !! stavamo aggiornando il nostro progetto in bootstrap3 da bootstrap2 e questo è stato risolto !!! – normalUser

0

Questi tutti dovrebbe funzionare.

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