2010-01-08 1 views
4

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

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

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

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

ответ

1

Вы можете проверить, если свойство на [событие] этот данный элемент устанавливаются с помощью:

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, вы можете с легкостью с handle events.

Редактировать: э-э, это не работает, если вы также используете addEventHandler. Он работает, только если вы установили свое событие, используя yourElement.onclick = anyFunction

+0

Как оказалось, событие, которое я пытаюсь обнаружить, определяется через jQuery (как событие live()). У меня есть jQuery в моем собственном распоряжении, но рыться по информации API на сайте jQuery.com, я до сих пор не вижу ничего об обнаружении ранее существовавших событий, а только информацию о том, как связать мои собственные события. – Hellion

+0

О, в этом случае: http://stackoverflow.com/questions/1236067/test-if-event-handler-is-bound-to-an-element-in-jquery – raphael

+0

спасибо, raphael! – Hellion