Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to access jquery internal data?

As you may or may not be aware as of jQuery 1.7 the whole event system was rewritten from the ground up. The codebase is much faster and with the new .on() method there is a lot of uniformity to wiring up event handlers.

One used to be able to access the internal events data and investiate what events are registered on any given element, but recently this internal information has been hidden based on the following scenario...

It seems that the "private" data is ALWAYS stored on the .data(jQuery.expando) - For "objects" where the deletion of the object should also delete its caches this makes some sense.

In the realm of nodes however, I think we should store these "private" members in a separate (private) cache so that they don't pollute the object returned by $.fn.data()"

Although I agree with the above change to hide the internal data, I have found having access to this information can be helpful for debugging and unit testing.

What was the new way of getting the internal jquery event object in jQuery 1.7?

like image 452
Unknown Avatar asked Oct 09 '22 05:10

Unknown


1 Answers

In jQuery 1.7, events are stored in an alternate location accessible through the internal $._data() method (but note that this method is documented as for internal use only in the source code, so use it at your own risks and be prepared for it to change or disappear in future versions of the library).

To obtain the events registered on an element, you can call $._data() on that element and examine the events property of the returned object. For example:

$("#yourElement").click(function() {
    // ...
});

console.log($._data($("#yourElement")[0]).events);
like image 164
Frédéric Hamidi Avatar answered Oct 12 '22 21:10

Frédéric Hamidi