jQuery триггер не срабатывает с bind () или on () для пользовательских событий



Может ли кто-нибудь сказать мне, почему этот код не будет работать?



$('body').on('test', function() {
alert('test');
});

$('body').trigger('test');


Я использую jquery-1.7.2.мин . Я не получаю никаких ошибок, просто ничего не происходит.



Я пробовал поместить код внутрь встроенного скрипта, внутри $(document).ready() и все равно ничего. Я также пробовал и on(), и bind(), и ни один из результатов. Я повсюду вижу примеры, показывающие один и тот же синтаксис, так чем же это отличается?

630   2  

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

    Ничего не найдено.