2014-04-22 11 views
5

Gdy zmienia się zakładka, próbuję wywołać wywołanie ajax. Jednak nie mogę nawet wydaje się mieć ten podstawowy test pracy:Zakładka "pokazany" nie uruchamia się zdarzenia - 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> 

a javascript:

(function ($) { 
    "use strict"; 

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

}(jQuery)); 

przypadku jakichkolwiek zmian kartę, należy wysłać mi alert.

Dlaczego ten prosty przykład nie działa?

Podstawowy przykład w dokumentach również nie działa. Całe wydarzenie (nawet kliknięcia przycisku) wydaje się niewidoczne - nie mogę tego złapać w żaden sposób.

+0

Jaki jest Twój bootstrap wersja? –

+0

Dokumenty do bootstrap dla bieżącej wersji 3.1.1 wspominają, że wyświetlana nazwa zdarzenia to "pokazany.bs.tab" – TheShellfishMeme

Odpowiedz

17

Spróbuj

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

To było to, - głupie niedopatrzenie z mojej strony - czytanie dokumentów za złą wersję. – Orangeman555

+0

Bez problemu. Jeśli odpowiada na twoje pytanie, nie zapomnij go zaakceptować :) –

+2

Co ciekawe, [rozwiązanie dla tego pytania SO] (http://stackoverflow.com/questions/20705905/bootstrap-3-jquery-event-for-active- tab-change), który jest pierwszym wynikiem dla słów kluczowych Google "tab change change bootstrap" nie wywołał zdarzenia dla mojego kodu AngularJS. Jednak to rozwiązanie z powodzeniem wystrzeliło wydarzenie. – chakeda

-1

Remove "use strict", który powoduje problem dla dalszego kodu do wykonywania:

(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

Spróbuj tego kodu, należy sprawdzić pracę 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

To jest z dokumentacji 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 
}) 

Masz 4 zdarzenia: ukrywać, pokazywać, ukryte, pokazane