7

Aggiungo un evento click a una casella di controllo che mostra/nasconde campi aggiuntivi a seconda del suo stato selezionato. Voglio che il gestore si attivi sul caricamento per impostare la struttura della pagina iniziale. Per qualche motivo triggerHandler non funziona sul campo. Se lo cambio in "trigger", il gestore scatterà, ma cambierà anche lo stato della casella di controllo. Riesci a vedere cosa ho fatto di sbagliato/perché triggerHandler non funzionerà?jquery triggerHandler non funziona mentre trigger fa

$('body').on("click", "#hdimage", function(){ 
    console.log('hd'); 
    if(!$('#hdimage').is(':checked')){ 
     $('.sd-dim').hide(); 
    } else { 
     $('.sd-dim').show(); 
    } 
}); 
$('#hdimage').triggerHandler('click'); 
+0

quale versione di jQuery stai usando? – Nelson

risposta

9

che accade (as described in the docs) perchè

Eventi creati con .triggerHandler()non lo fanno ribollire il Gerarchia DOM; se non sono gestiti direttamente dall'elemento bersaglio, non fanno nulla.

e dal momento che si utilizza la sintassi delegato del metodo .on() che permette body gestire l'evento che si verifica click sull'elemento #hdimage, quell'evento non raggiunge mai il body ..

0

il tuo evento non è legato a "#hdimage" il suo legato a 'corpo'

$(document).ready(function(){ 
    $('#hdimage').on("click", function(){ 
     alert("dostuff") 
    }); 
    $('#hdimage').triggerHandler('click'); 
});