Possible Duplicate:
test if event handler is bound to an element in jQuery
Tried to do the following (link is jQuery object of 'a' tag):
link.data("events") //undefined even if link has event handlers jQuery.data(link, 'events') //undefined always also jQuery._data(link, 'events') //undefined always also
using jquery-1.8.3
So, how to check if element has click handler?
To check if an element has event listener on it with JavaScript, we can call the getEventListeners function in the Chrome developer console. getEventListeners(document. querySelector("your-element-selector")); in the Chrome developer console to select the element we want to check with querySelector .
Right-click on the search icon button and choose “inspect” to open the Chrome developer tools. Once the dev tools are open, switch to the “Event Listeners” tab and you will see all the event listeners bound to the element. You can expand any event listener by clicking the right-pointing arrowhead.
The onclick event generally occurs when the user clicks on an element. It allows the programmer to execute a JavaScript's function when an element gets clicked. This event can be used for validating a form, warning messages and many more. Using JavaScript, this event can be dynamically added to any element.
You can use jQuery._data
to check for events. The first argument should be a reference to the HTML element, not the jQuery object.
var ev = $._data(element, 'events'); if(ev && ev.click) alert('click bound');
Sample below.
$(function(){ $('#test').click(function(){ // NOTE: this below is refering to the HTML element, NOT the jQuery element var ev = $._data(this, 'events'); if(ev && ev.click) alert('click bound to this button'); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <button id="test">Click me to check for click handlers</button>
Also note that this method for checking events will only work when the event is bound via jQuery. If the event is bound via element.attachEventListener
, element.onclick
, <a onclick="doStuff()">
or any other non jQuery way, this will not work. If you're fitting into this boat, check this answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With