not change javascript addeventlistener

javascript - change - addeventlistener mouseover



¿Funcionará el mismo addEventListener? (1)

elemen.addEventListener(''click'',func,false); elemen.addEventListener(''click'',func,false);

¿Se llamará la func dos veces al hacer clic en elemen ?

Si es así ... ¿Hay alguna solución para verificar si el mismo detector de eventos existe en elemen ?


func no será llamada dos veces al hacer clic, no; Pero sigue leyendo para más detalles y un "gotcha".

Desde addEventListener en la especificación:

Si varios EventListeners idénticos se registran en el mismo EventTarget con los mismos parámetros, se descartan las instancias duplicadas. No hacen que el EventListener se llame dos veces y, como se descartan, no es necesario eliminarlos con el método removeEventListener .

(Mi énfasis)

Aquí hay un ejemplo:

var target = document.getElementById("target"); target.addEventListener("click", foo, false); target.addEventListener("click", foo, false); function foo() { var p = document.createElement("p"); p.innerHTML = "This only appears once per click, but we registered the handler twice."; document.body.appendChild(p); }

<input type="button" id="target" value="Click Me">

Sin embargo, es importante tener en cuenta que tiene que ser la misma función , no solo una función que hace lo mismo. Por ejemplo, aquí estoy conectando cuatro funciones separadas al elemento, todas las cuales serán llamadas:

var target = document.getElementById("target"); var count; for (count = 0; count < 4; ++count) { target.addEventListener("click", function() { var p = document.createElement("p"); p.innerHTML = "This gets repeated."; document.body.appendChild(p); }, false); }

<input type="button" id="target" value="Click Me">

Esto se debe a que en cada iteración de bucle se crea una función diferente (aunque el código es el mismo).