javascript - saber - Verifique si el evento existe en el elemento
saber si existe un elemento javascript (9)
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna manera de verificar si existe un evento en jQuery? Estoy trabajando en un complemento que usa eventos personalizados con espacios de nombres, y me gustaría poder verificar si el evento está vinculado a un elemento o no.
A continuación se detalla cómo verificar si existe algún evento para un elemento
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script>
$(function() {
$("#textDiv").click(function() {
//Event Handling
});
var events = $._data(document.getElementById(''textDiv''), "events");
var hasEvents = (events != null);
});
</script>
</head>
<body>
<div id="textDiv">Text</div>
</body>
</html>
El siguiente código le proporcionará todos los eventos de clic en el selector dado:
jQuery(selector).data(''events'').click
Puede iterar sobre él usando cada uno o por ej. compruebe la longitud para la validación como:
jQuery(selector).data(''events'').click.length
Pensé que ayudaría a alguien. :)
Escribí un complemento llamado hasEventListener que hace exactamente eso.
Espero que esto ayude.
Este trabajo para mí muestra los objetos y el tipo de evento que ha ocurrido.
var foo = $._data( $(''body'').get(0), ''events'' );
$.each( foo, function(i,o) {
console.log(i); // guide of the event
console.log(o); // the function definition of the event handler
});
He respondido a una pregunta similar aquí: hasHandlers () helper
Trabajar con jQuery> = v1.11.0
Puedes utilizar:
$("#foo").unbind(''click'');
para asegurarse de que todos los eventos de clics estén desvinculados, luego adjunte su evento
Terminé haciendo esto
typeof ($(''#mySelector'').data(''events'').click) == "object"
usar el filtro de eventos jquery
puedes usarlo así
$("a:Event(click)")
$(''body'').click(function(){ alert(''test'' )})
var foo = $.data( $(''body'').get(0), ''events'' ).click
// you can query $.data( object, ''events'' ) and get an object back, then see what events are attached to it.
$.each( foo, function(i,o) {
alert(i) // guid of the event
alert(o) // the function definition of the event handler
});
Puede inspeccionar alimentando la referencia del objeto (no el objeto jQuery) a $ .data, y para el segundo argumento alimentar ''events'' y eso devolverá un objeto poblado con todos los eventos como ''click''. Puede recorrer ese objeto y ver qué hace el controlador de eventos.