List of an element's events

2020-06-17 07:34发布

问题:

Is there a way to find all of the events for a element in javascript? or a way to unbind all events from a element?

Thanks.

回答1:

There is not way to do that directly using javascript.

Jquery has a couple of functions to keep track of that data.

One "pure" way to do that is to change the addEventListener/attachEvent function through prototyping (search about javascript prototype stuff, not the framework).

Or if you have a custom function to hadle adding/removing events you can tune it.

Well, that's it.



回答2:

Of course ! Take a look at this to bind/unbind events http://api.jquery.com/category/events/ and use this jQuery code fragment to get all the events bound to an element in the form of a hashset of keypairs "eventname/function delegate"

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


回答3:

If you don't want ot use jQuery, a quick and dirty way (and there's bound to be a better one) would be to loop through the element's parameters and check for functions that begin with '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.
      }
   }
}