53

Ho una pulsanti di avvio di Twitter-radio e agganci un evento onclick su di esso. Ma come faccio a verificare quale dei pulsanti è stato attivato?Twitter Bootstrap evento onclick su pulsanti-radio

Il mio primo pensiero è stato semplicemente controllare la classe 'attiva', ma questo dovrebbe creare una condizione di competizione (il risultato dipende se l'evento Bootstrap di Twitter o il mio evento onclick è gestito per primo).

risposta

61

Questo è davvero fastidioso. Quello che ho finito usando è questo:

Innanzitutto, crea un gruppo di pulsanti semplici senza attributo data-toggle.

<div id="selector" class="btn-group"> 
    <button type="button" class="btn active">Day</button> 
    <button type="button" class="btn">Week</button> 
    <button type="button" class="btn">Month</button> 
    <button type="button" class="btn">Year</button> 
</div> 

Quindi, scrivere un gestore di eventi che simula l'effetto pulsante di opzione da 'attivante' l'uno e cliccato 'disattivare' tutti gli altri pulsanti. (EDIT:. Versione più pulita integrato Nick s' dai commenti)

$('#selector button').click(function() { 
    $(this).addClass('active').siblings().removeClass('active'); 

    // TODO: insert whatever you want to do with $(this) here 
}); 
+24

Una versione leggermente concisa e ottimizzata (nessuna doppia chiamata al selettore): $ (this) .addClass ('active'). Siblings(). RemoveClass ('active'); – Nick

+0

questo non funziona con il pulsante di opzione. come specificare quale è quale se ogni pulsante di opzione fa una cosa diversa –

+0

@MurhafSousli Non sono sicuro di aver compreso il problema.Se inserisci il tuo codice dove inserisco '// TODO', dovresti essere in grado di accedere al pulsante di scelta appena selezionato come' $ (this) '. –

19

userei un non evento di modifica uno scatto come questo:

$('input[name="name-of-radio-group"]').change(function() { 
    alert($(this).val()) 
}) 
+5

Il pensiero di questo, ma in base alla w3schools (http://www.w3schools.com/jsref/event_onchange.asp) l'evento OnChange viene attivato solo da ,