Я столкнулся с каким-то поведением, которого я не ожидал. Я не уверен, что это ошибка в jQuery или просто работает именно так.
http://jsfiddle.net/7fRes/4/
Наше приложение генерирует довольно много обработчиков событий, которые мы хотим, чтобы jQuery вызывал, когда мы запускаем их с помощью триггера по document
(я думаю, что они называются глобальными событиями?). Чтобы лучше контролировать то, что происходит, мы добавили им пространства имен.
$(document).on('evName.someThing', function(ev) {
output.append('<br />' + ++counter + ' triggered! ' + new Date().getSeconds());
})
output.on('evName2.funkyNameSpace', function() {
output.append('<br />' + ++counter + ' funky click!');
})
Кажется, что инициирование события на document
ведет себя иначе, чем запуск события по определенному элементу:
пример:
output.trigger('evName2'); // triggers (expected)
output.trigger('evName2.aaaaaNamespace'); // does not trigger (expected)
output.trigger('evName2.funkyNameSpace'); // triggers (expected)
пример:
$.event.trigger('evName.someThingElse'); // triggers (hmmm?)
$.event.trigger('evName.someThinggg'); // triggers (hmmm?)
$.event.trigger('evName.foo'); // triggers (hmmm?)
$.event.trigger('evName'); // triggers (expected)
$.event.trigger('evNameeeeee'); // does not trigger (expected)
Это ожидаемое поведение? Или ошибка?
Кажется, это/было ошибкой в jQuery.
Обновление нашего приложения в jQuery 1.10.x дает поведение, которое я ожидал. См. Http://jsfiddle.net/7fRes/6/
(Хех.. ТАК заставляет меня поставить здесь какой-то код, прежде чем ответить).
$.event.trigger('evName.foo'); // does NOT trigger (expected!)
$.event.trigger('evName'); // triggers (expected!)
$.event.trigger('evName.someThing'); // triggers (expected!)