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 mismoEventTarget
con los mismos parámetros, se descartan las instancias duplicadas. No hacen que elEventListener
se llame dos veces y, como se descartan, no es necesario eliminarlos con el métodoremoveEventListener
.
(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).