Могу ли я использовать функции событий jQuery с простыми старыми объектами? - PullRequest
7 голосов
/ 12 ноября 2011

jQuery имеет такие функции, как .on () и .trigger () , которые позволяют вам присоединять события к объектам DOM и затем вручную запускать эти события. Документация для этих функций специально относится к событиям в «элементах», которые я понимаю как элементы HTML / DOM.

Могу ли я также использовать эти функции для добавления функциональности события к простым старым объектам JavaScript?

var x = {};
$(x).on('bonk', function() { alert('Oif!'); });
$(x).trigger('bonk'); // shows the alert

Это работает во всех браузерах, в которых я его тестировал (Chrome 15, FireFox 7, IE 9 и Opera 11.52, все в Windows), что выглядит многообещающе. Но из документации не ясно, означает ли это , что означает , чтобы быть поддерживаемым сценарием во всех браузерах, на всех платформах. Выбор терминологии («элементов») документа вызывает много сомнений.

Документы do заявляют, что я могу создать собственные имена событий (например, на странице документа для .on () есть пример "Присоединить и вызвать пользовательский ( не браузерные) события "). Но тем не менее, это всегда прикрепление события к элементу DOM, а не к простому старому объекту.

Есть что-нибудь, что однозначно указывает, поддерживает ли jQuery .on() и .trigger() с простыми старыми объектами JavaScript?

1 Ответ

2 голосов
/ 12 ноября 2011

Глядя на исходный код, я нашел несколько подсказок, что он предназначен, но потом я также нашел это:

Нет особой причины, почему это не задокументировано (кроме того, что это скорее нетрадиционно для большинства пользователей) - но да, мы поддерживаем это и есть модульные тесты для этого.

http://forum.jquery.com/topic/triggering-custom-events-on-js-objects

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...