Я несколько зелёный программист и совершенно новый для javascript/jquery, но я думал, что понял события javascript. Очевидно нет. Я не могу заставить слушателей событий работать так, как хотелось бы.Как подключить прослушиватель событий к javascript var
Учитывая JavaScript:
var Thing = {
//stuff
update: function() {
$.event.trigger({type:'stateUpdate', more:stuff});
}
};
var Room = {
//more stuff
updateHandler: function (e) {
//handle event here
}
};
Если я JQuery:
$(document).on('stateUpdate', $Room.updateHandler);
то он работает отлично, но я не могу сделать ни
$(Room).on('stateUpdate', $Room.updateHandler);
или
Room.addEventListerner('stateUpdate', $Room.updateHandler);
Первый ничего не делает, второй дает .addEventListerner - это не ошибка функции.
Я гугл в течение нескольких часов и не могу понять это. Я нашел что-то, что сказал .addEventListener работает только с объектами, которые реализуют EventListener, что-то о handleEvent, и что-то о функциях, автоматически реализующих EventListener. Ничто не может заставить объект реализовать его. Невозможно добавить слушателей к объектам javascript, которые не являются функциями? Должен ли я создать объект обработчика событий или использовать «документ» или «окно» и заставить его обработчики вызовов? Это кажется действительно уродливым.
Должны ли объекты быть функциями в первую очередь? Будет ли это работать? Похоже, нынешнее мнение состоит в том, что создание всех функций - это просто попытка превратить javascript во что-то, чего нет.
Возможный дубликат [как добавить eventListener к объекту в javascript, который будет срабатывать при манипулировании объектом?] (Http://stackoverflow.com/questions/3903226/how-to-add-an-eventlistener-to -an-object-in-javascript-which-will-fire-when-obje) – Barmar
Слушатели событий предназначены только для элементов DOM, а не для произвольных объектов Javascript. См. Связанный вопрос для получения более подробной информации. – Barmar
Я предполагаю, что это не неслыханное поведение. Есть ли «правильный» способ сделать это рядом с слушателями? (предпочтительно, что способствует модульности, то есть больше «комнат», добавленных позже с минимальным или вообще не «редактированием» вещей). Невидимые посредники DOM - это все, что я могу себе представить помимо прямых вызовов в функции обновления «вещи», являются ли такие объекты DOM плохой практикой? – LucidCrux