jQuery find events handlers registered with an object

后端 未结 16 3119
予麋鹿
予麋鹿 2020-11-21 07:16

I need to find which event handlers are registered over an object.

For example:

$(\"#el\").click(function() {...});
$(\"#el\").mouseover(function() {         


        
相关标签:
16条回答
  • 2020-11-21 08:06

    Another way to do it is to just use jQuery to grab the element, then go through actual Javascript to get and set and play with the event handlers. For instance:

    var oldEventHandler = $('#element')[0].onclick;
    // Remove event handler
    $('#element')[0].onclick = null;
    // Switch it back
    $('#element')[0].onclick = oldEventHandler;
    
    0 讨论(0)
  • 2020-11-21 08:10

    I've combined both solutions from @jps to one function:

    jQuery.fn.getEvents = function() {
        if (typeof(jQuery._data) === 'function') {
            return jQuery._data(this.get(0), 'events') || {};
        }
    
        // jQuery version < 1.7.?
        if (typeof(this.data) === 'function') {
            return this.data('events') || {};
        }
    
        return {};
    };
    

    But beware, this function can only return events that were set using jQuery itself.

    0 讨论(0)
  • 2020-11-21 08:12

    Events can be retrieved using:

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

    or jQuery 1.8+:

    jQuery._data(elem, 'events');
    

    Note: Events bounded using $('selector').live('event', handler) can be retrieved using:

    jQuery(document).data('events')
    
    0 讨论(0)
  • 2020-11-21 08:15

    I use eventbug plugin to firebug for this purpose.

    0 讨论(0)
提交回复
热议问题