195 votes

jQuery vérifier si l'événement n'existe sur l'élément

Est-il un moyen de vérifier si un événement existe en jQuery? Je travaille sur un plugin qui utilise personnalisé des espaces événements, et que vous souhaitez être en mesure de vérifier si l'événement est lié à un élément, ou pas.

145voto

meder Points 81864
$('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
});

Vous pouvez inspecter par l'alimentation de la référence de l'objet ( pas l'objet jQuery)$.de données, et pour la deuxième argument nourrir des "événements" et qui retourne un objet rempli avec tous les événements tels que le "clic". Vous pouvez faire une boucle par le biais de l'objet et de voir ce que le gestionnaire d'événement.

96voto

Toni Points 161

Vous pouvez utiliser:

$("#foo").unbind('click');

pour assurer que tous les événements de clic sont unbinded, puis de brancher votre événement

56voto

Bob Dylan Points 1129

Voici comment vérifier si aucun événement n'existe pour un élément

<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>

28voto

fareed namrouti Points 3830

utiliser jquery filtre d'événement

vous pouvez l'utiliser comme ceci

$("a:Event(click)")

5voto

Sebastien P. Points 461

J'ai écrit un plugin appelé hasEventListener qui fait exactement cela.

Espérons que cette aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X