Я пытаюсь использовать пользовательские события jQuery. При загрузке DOM я связываю body
с настраиваемым событием test
с использованием $.on()
. Сразу после этого я запускаю это событие, и все работает так, как планировалось. Однако в любой другой момент, когда я запускаю событие (при обратном вызове, с консоли и т. Д.), Ничего не происходит. Я написал jsfiddle, чтобы проиллюстрировать эту ситуацию. Есть идеи?Пользовательские события в jQuery
$(function(){
$('body').on('test', function(){
alert('test triggered');
});
$('body').on('click', '.btn', triggerTest);
$('body').trigger('test');
});
var triggerTest = function(){
$('body').trigger('test');
}
Нажатие на якорь вызывает ошибку: 'TypeError: handleObj.handler.apply не является функцией'. Проблема в том, что на данный момент вы пытаетесь привязать обработчик событий к якорю, 'triggerTest' еще не инициализирован. Если я изменю настройку скрипта, чтобы включить код в 'head' документа, он отлично работает: http://jsfiddle.net/vgEzD/2/. Зачем? Потому что прямо сейчас вы выполняете весь код, когда DOM загружается, то есть обратный вызов, который вы передаете '.ready', выполняется * немедленно *, прежде чем назначить значение' triggerTest'. –