7

Я добавляю событие click к флажку, который будет отображать/скрывать дополнительные поля в зависимости от его проверенного состояния. Я хочу, чтобы обработчик запускал загрузку, чтобы настроить начальную структуру страницы. По какой-то причине triggerHandler не работает на поле. Если я изменю его на «триггер», обработчик начнет стрелять, но статус флажка также изменится. Вы видите, что я сделал неправильно/почему triggerHandler не будет работать?jQuery triggerHandler не работает, пока триггер активируется

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

какую версию JQuery вы используете? – Nelson

ответ

9

Это происходит потому, что (as described in the docs)

События, созданные с помощью .triggerHandler()сделать не пузырек вверх по DOM-иерархия; если они не обрабатываются целевым элементом напрямую, они ничего не делают.

и так как вы использовать делегированный синтаксис метода .on() который позволяет body обрабатывать click события, которое происходит на #hdimage элементе, это событие никогда не достигает body ..

0

Ваше событие не связано с "#hdimage" ее границы к 'телу'

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