Я не могу найти какие-либо хорошие ресурсы о том, как пользовательские события в jquery фактически реализованы. Как то, как они имитируют бульканье события и т.д.Как jQuery Пользовательские события работают точно
8
A
ответ
7
таким образом:
// bubbling is internal
trigger: function(event, data, elem /*, bubbling */) {
// Event object or event type
var type = event.type || event,
bubbling = arguments[3];
// Handle a global trigger
if (!elem) {
// Don't bubble custom events when global (to avoid too much overhead)
event.stopPropagation();
// Only trigger if we've ever bound an event for it
if (jQuery.event.global[ type ]) {
jQuery.each(jQuery.cache, function() {
if (this.events && this.events[type]) {
jQuery.event.trigger(event, data, this.handle.elem);
}
});
}
}
// ... snip ...
// Trigger the event, it is assumed that "handle" is a function
var handle = elem.nodeType ?
jQuery.data(elem, "handle") :
(jQuery.data(elem, "__events__") || {}).handle;
if (handle) {
handle.apply(elem, data);
}
var parent = elem.parentNode || elem.ownerDocument;
// ... snip ....
if (!event.isPropagationStopped() && parent) {
jQuery.event.trigger(event, data, parent, true);
} else if (!event.isDefaultPrevented()) {
// ... snip ...
jQuery.event.triggered = true;
target[ targetType ]();
}
}
Что здесь происходит следующим образом :
Когда trigger
называется jQuery проверяет, запускается ли событие глобально ($.trigger("event_name");
).
Если не, которые инициированы по всему миру, и распространение не было остановлено и данный элемент имеет родительский элемент (!event.isPropagationStopped() && parent
), то JQuery вызывает запуск события вручную на родительский элемент.
jQuery.event.trigger(event, data, parent, true);
Там довольно немного больше происходит - см event.js в исходном коде Jquery.
1
Отъезд tutorials
$(document).bind("eventType", ...);
// This is equivalent to the plugin's $.subscribe("eventType", ...);
$(document).trigger("eventType");
// equivalent to plugin's $.publish("eventType");
проверка Кроме этого SO question
Смежные вопросы
- 1. jQuery пользовательские события не работают
- 2. jquery пользовательские события путаница
- 3. JQuery Пользовательские события триггеров
- 4. Пользовательские события в jQuery
- 5. как Makefiles работают точно
- 6. jQuery глобальные пользовательские события и live(), похоже, не работают
- 7. События Jquery не работают
- 8. jQuery пользовательские вкладки не работают
- 9. JQuery пользовательские события возвращают значение
- 10. Как точно работают параметры? Обработка
- 11. Как точно работают синонимы типов?
- 12. W8 jQuery события не работают
- 13. Вложенные события JQuery не работают
- 14. пользовательские события, выбранные jQuery datepicker, но работают неустранимо, если есть несколько приемников события
- 15. Как поймать jquery пользовательские события в javascript
- 16. Как сделать живые пользовательские события в jQuery
- 17. Как обрабатывать пользовательские события jQuery в Meteor?
- 18. Jquery nestedSortable: как запускаются пользовательские события?
- 19. Пользовательские события без триггера
- 20. Как использовать пользовательские события
- 21. Как обрабатывать пользовательские события?
- 22. Как работают игровые события?
- 23. Как точно контролировать события касания в браузере
- 24. jQuery подтверждать, что пользовательские сообщения не работают
- 25. jQuery мобильные пользовательские значки не работают
- 26. jQuery пользовательские вкладки не работают правильно
- 27. Получить пользовательские данные из события jquery
- 28. Пользовательские события для пользовательского JQuery плагин
- 29. Функциональный jQuery: пользовательские события или функции?
- 30. Пользовательские кнопки jQuery datatable (TableTool), вызывающие события
Я думаю, что он не хотел объяснения API, а технического объяснения того, как они на самом деле работают. – ThiefMaster
@ThiefMaster Если это так, лучший способ узнать - посмотреть на источник :) http://james.padolsey.com/jquery/ –