2010-05-22 17 views
2

utilisant:Détection Handlers d'un événement « Live » jQuery

$('#foo').data('events').click 

Nous sommes en mesure d'accéder à un objet itérative des gestionnaires de clic ajouté à l'élément « #foo », mais seulement quand ils ont été ajoutés avec .bind (

Existe-t-il un moyen d'obtenir les gestionnaires pour un événement ajouté avec .live()?

Existe-t-il un autre moyen de savoir si un gestionnaire de clic est affecté à un élément?

+0

Utilisez votre propre gestionnaire d'événements sur mesure, vous pouvez le faire en jquery – Chirag

Répondre

3

live des événements sont ajoutés au document. Utiliser

$(document).data('events').click 

Ce qui précède renvoie un tableau d'objets contenant des informations sur chaque gestionnaire de clic lié. Chacun de ces objets a une propriété selector contenant le sélecteur utilisé au moment de la liaison avec $(selector).live(.., ..).

L'un de ces sélecteurs qui correspond à l'élément avec id foo sera déclenché lorsque vous cliquez sur #foo. Notez que le sélecteur ne doit pas être exactement #foo pour que cela se produise. Il existe de nombreux autres sélecteurs pouvant être utilisés pour cibler un élément. Par exemple, si #foo était un <p>, puis un gestionnaire de clic en direct tels que

$("p").live("click", function..) 

cibleront également #foo.

Voici une approche. Parcourez chaque objet et observez si l'un des éléments correspondant à la propriété selector inclut #foo.

var handlers = $(document).data('events').click; 

// jQuery quirk: $.map callback takes arguments (obj, index) and 
// $(..).map takes callback arguments as (index, obj) 
var fooClickHandlers = $.map(handlers, function(handler) { 
    if($(handler.selector).is('#foo')) { 
     return handler; 
    } 
    return null; 
}); 

// fooClickHandlers is a list of all handlers that will fire on #foo click 
+0

Grand, mais comment pouvons-nous savoir quels de ces gestionnaires se déclenche lorsque « #foo » est cliqué? Merci. –

+0

@Anderson .. mis à jour la réponse à votre commentaire. – Anurag