2014-04-22 13 views
5

Quando una scheda cambia, sto tentando di eseguire una chiamata Ajax. Tuttavia, non posso nemmeno sembrano avere questo test di base per il lavoro:Scheda "mostrato" evento non viene attivato - Twitter Bootstrap

<ul class="nav nav-tabs"> 
    <li class=""> 
     <a data-toggle="tab" href="#gqs-uploader" id="gqs-uploader-btn">Upload</a> 
    </li> 
    <li class="active"> 
     <a data-toggle="tab" href="#gqs-results" id="gqs-results-btn">Results</a> 
    </li> 
    <li class=""> 
     <a data-toggle="tab" href="#gqs-download" id="gqs-download-btn">Download</a> 
    </li> 
</ul> 

E il javascript:

(function ($) { 
    "use strict"; 

    $(function() { 
     $(document).on('shown', 'a[data-toggle="tab"]', function (e) { 
      alert('TAB CHANGED'); 
     }); 
    }); 

}(jQuery)); 

quando uno cambia scheda, mi devono inviare un avviso.

Perché questo semplice esempio non funziona?

L'esempio di base nei documenti non funziona neanche. L'intero evento (anche i clic sui pulsanti) sembra invisibile: non riesco a percepirlo in alcun modo.

+0

Qual è la tua versione di bootstrap? –

+0

I documenti di bootstrap per la versione corrente 3.1.1 menzionano che il nome dell'evento mostrato nella scheda è 'shown.bs.tab' – TheShellfishMeme

risposta

17

Prova questa

$(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) { 
    alert('TAB CHANGED'); 
}) 
+0

Questo era, - una stupida supervisione da parte mia - la lettura dei documenti per la versione sbagliata. – Orangeman555

+0

Nessun problema. Se risponde alla tua domanda non dimenticare di accettarlo :) –

+2

È interessante notare che [la soluzione per questa domanda SO] (http://stackoverflow.com/questions/20705905/bootstrap-3-jquery-event-for-active- tab-change), che è il primo risultato per le parole chiave di google "tab change event bootstrap" non ha attivato l'evento per il mio codice AngularJS. Tuttavia, questa soluzione ha attivato l'evento con successo. – chakeda

-1

Rimuovi "use strict", che sta causando problemi per un ulteriore codice da eseguire:

(function ($) { 
    //"use strict"; // remove this line js doesn't use use strict as php 

    $(function() { 
     $(document).on('shown', 'a[data-toggle="tab"]', function (e) { 
      alert('TAB CHANGED'); 
     }); 
    }); 

}(jQuery)); 
2

provare questo codice, controllare lavorando FIDDLE

<ul class="nav nav-tabs"> 
    <li class=""> 
     <a data-toggle="tab" href="#gqs-uploader" id="gqs-uploader-btn">Upload</a> 
    </li> 
    <li class="active"> 
     <a data-toggle="tab" href="#gqs-results" id="gqs-results-btn">Results</a> 
    </li> 
    <li class=""> 
     <a data-toggle="tab" href="#gqs-download" id="gqs-download-btn">Download</a> 
    </li> 
</ul> 

<script> 
    (function ($) { 
     $(function() { 
      $(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) { 
       alert('TAB CHANGED'); 
      }); 
     }); 
    }(jQuery)); 
</script> 
0

Questo è dalla documentazione di bootstrap: http://getbootstrap.com/javascript/#tabs

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

hai 4 eventi: nascondere, mostrare, nascosta, mostrate

Problemi correlati