Добавление Javascript EventListener, только если нет другого слушателя? - PullRequest
5 голосов
/ 09 января 2010

Я относительный тир на арене программирования Javascript, поэтому, пожалуйста, будьте осторожны со мной. : -)

Я пытаюсь добавить eventListener к различным элементам DOM на странице. Тем не менее, некоторые элементы, которые я добавляю в свое событие, уже имеют eventListener, и я не хочу заменять его; Я только хочу добавить свое событие к элементу, с которым уже не связано событие.

Я просмотрел кучу вещей, касающихся addEventListener, event.StopPropagation, всплывающих событий и т. Д., Но пока не нашел способа сделать это.

Есть ли способ обнаружить другие прослушиватели событий для данного элемента или каким-либо другим способом добраться туда, куда я хочу?

1 Ответ

1 голос
/ 09 января 2010

Вы можете проверить, установлено ли свойство on [event] для данного элемента, используя:

if (typeof(document.getElementById("element-id").onclick) == "undefined") {
  // event undefined
}

if (typeof(document.getElementById("element-id").onclick) == "function") {
  // event defined
}

Обратите внимание, что это не будет работать, если для определения события использовалась библиотека JavaScript, такая как jQuery (например, с помощью $("#element-id").click()). Я бы рекомендовал вам использовать jQuery , вы можете легко обрабатывать события .

edit: ну, аааа, это не сработает, если вы тоже используете addEventHandler. Это работает, только если вы установили событие с помощью yourElement.onclick = anyFunction

...