Javascript - Попытка обернуть мою голову вокруг пользовательских событий - PullRequest
3 голосов
/ 20 февраля 2009

Я пытаюсь разобраться в пользовательских событиях. Я понимаю, как регистрировать и запускать пользовательские события. Тем не менее, кажется, что невозможно зарегистрировать действительно настраиваемые события. Все должно прослеживаться до события DOM, например, щелчок, загрузка, размытие и т. Д. Или я не прав?

Например, предположим, у меня есть массив. Я хочу зарегистрировать событие, которое срабатывает при изменении длины массива. Насколько я понимаю, мне нужно зарегистрировать событие, а затем создать таймер setInterval, который проверяет текущую длину массива по сравнению с ранее сохраненной длиной. Если длина изменилась, мне нужно было бы запустить свое пользовательское событие из setInterval.

Есть ли способ зарегистрировать событие для моего массива и запускать его автоматически при изменении длины?

Ответы [ 2 ]

3 голосов
/ 13 мая 2009

Пользовательские события содержатся в W3C spec , но ни один из основных браузеров не поддерживает их. Вот почему несколько других пользователей предложили сторонние библиотеки. Прототип, YUI, JQuery и большинство других имеют эти возможности. Вы также можете свернуть свои .

Если вы хотите посмотреть, как может выглядеть какой-то пользовательский синтаксис события, вы можете взглянуть на это руководство для пользовательских событий Prototype . Некоторые важные моменты:

  • Пользовательские события прототипа должны быть присоединены к элементам DOM, чтобы они могли пузыриться как собственные события.
  • Они должны быть в синтаксисе prefix:event, чтобы запустить
  • Они могут содержать очень полезный параметр memo, который позволяет любому произвольному контексту или набору объектов пузыриться с событием.
2 голосов
/ 20 февраля 2009

почему бы вам не написать метод addElement для вашего массива, который вы будете использовать всякий раз, когда хотите вставить элементы, таким образом вы сможете писать код в случае изменения array.length. то же самое с removeElement. События не предназначены для такого рода вещей.

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