2010-10-11 3 views

Répondre

3

Il n'y a pas moyen de le faire directement en utilisant javascript.

Jquery a quelques fonctions pour garder une trace de ces données. Un moyen "pur" de le faire est de changer la fonction addEventListener/attachEvent par le prototypage (recherche sur le prototype de javascript, pas sur le framework).

Ou si vous avez une fonction personnalisée pour ajouter/supprimer des événements, vous pouvez la régler.

Eh bien, c'est tout.

+0

J'utilise une fonction personnalisée pour ajouter des événements (gérer ie etc.) est-il un moyen de sauvegarder tous les événements (noms et fonctions) ajouté à un élément? – errorhandler

+0

Salut errorhandler, je suppose que vous utilisiez une fonction personnalisée pour gérer IE addEvent Eh bien, je pense que vous pouvez régler cette fonction, en ajoutant un objet global var/object avec l'événement data - target, target, et la fonction de rappel, puis dans cet objet var/custom, ajoutez quelques fonctions pour récupérer les données nécessaires. – Dave

2

Bien sûr! Jetez un oeil à ce pour lier/événements sans liaison http://api.jquery.com/category/events/ et utiliser ce fragment de code jQuery pour obtenir tous les événements liés à un élément sous la forme d'un HashSet de paires de clés « délégué eventName/fonction »

jQuery(elem).data('events'); 
+0

Cela ne fonctionne que si vous utilisez déjà jQuery. –

+0

est-il un moyen de le faire sans jQuery? – errorhandler

+0

Eh bien, tout ce qu'il faut, c'est d'inclure l'API jQuery. Ce fragment de code devrait également fonctionner pour les événements qui ne sont pas directement liés par jQuery. – NinjaCross

3

Si vous ne voulez pas utiliser jQuery, une manière rapide et sale (et il y en aura sûrement une meilleure) serait de parcourir les paramètres de l'élément et de vérifier les fonctions qui commencent par 'on' (onclick etc).

var el = document.getElementById('elementid') ; 
el.onclick = function(e) { console.log('Clicked!') ; } ; // Attached test event. 
if(typeof(el)=='object') { 
    for(var i in el) { 
     if(i.substr(0,2) == 'on' && typeof(el[i])=='function') { 
     el[i] = function() {} ; // Unbind with null function. 
     } 
    } 
} 
+0

merci, je vais l'essayer – errorhandler

+1

ne fonctionne pas pour moi :( – errorhandler

Questions connexes