jQuery триггер не срабатывает с bind () или on () для пользовательских событий
Может ли кто-нибудь сказать мне, почему этот код не будет работать?
$('body').on('test', function() {
alert('test');
});
$('body').trigger('test');
Я использую jquery-1.7.2.мин . Я не получаю никаких ошибок, просто ничего не происходит.
Я пробовал поместить код внутрь встроенного скрипта, внутри $(document).ready() и все равно ничего. Я также пробовал и on(), и bind(), и ни один из результатов. Я повсюду вижу примеры, показывающие один и тот же синтаксис, так чем же это отличается?
2 ответов:
Похоже, проблема заключается в том, что DOM каким-то образом готов. Размещение кода внутри встроенного скрипта не будет работать. Размещение его внутри
$('document').ready()будет работать с анонимной функцией, но по какой-то причине не вызовет функцию с '( )'.. Этот код работалНо этого не произошло... * обратите внимание на скобку вызова функции.$(document).ready(start); function start(){ $('body').on('test', function() { alert('test'); }); $('body').trigger('test'); }$(document).ready(start()); function start(){ $('body').on('test', function() { alert('test'); }); $('body').trigger('test'); }Точный пример работает в обоих направлениях на jsfiddle , но почему-то только один способ работает на моем сервере. Что, я думаю, поднимет еще один вопрос. вопрос почему, но по крайней мере мы можем видеть, что этот код действительно работает, есть какая-то странная аномалия с моими вещами :/
Попробуйте делегирование:
$(document).on('test', 'body', function() { alert('test'); }); $('body').trigger('test');Это работает как live () раньше. http://api.jquery.com/live/
Comments