So prüfen Sie auf Ereignisse für ein Element:
var events = $._data(element, "events")
Beachten Sie, dass dies nur mit direkten Event-Handlern funktioniert. Wenn Sie $(document).on("event-name", "jq-selector", function() { //logic }) verwenden, sollten Sie die Funktion getEvents am Ende dieser Antwort sehen
Zum Beispiel:
var events = $._data(document.getElementById("myElemId"), "events")
o
var events = $._data($("#myElemId")[0], "events")
Vollständiges Beispiel:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script>
$(function() {
$("#textDiv").click(function() {
//Event Handling
});
var events = $._data(document.getElementById('textDiv'), "events");
var hasEvents = (events != null);
});
</script>
</head>
<body>
<div id="textDiv">Text</div>
</body>
</html>
Eine umfassendere Art der Überprüfung, die auch dynamische Zuhörer einschließt, wurde mit $(document).on
function getEvents(element) {
var elemEvents = $._data(element, "events");
var allDocEvnts = $._data(document, "events");
for(var evntType in allDocEvnts) {
if(allDocEvnts.hasOwnProperty(evntType)) {
var evts = allDocEvnts[evntType];
for(var i = 0; i < evts.length; i++) {
if($(element).is(evts[i].selector)) {
if(elemEvents == null) {
elemEvents = {};
}
if(!elemEvents.hasOwnProperty(evntType)) {
elemEvents[evntType] = [];
}
elemEvents[evntType].push(evts[i]);
}
}
}
}
return elemEvents;
}
Beispiel für die Verwendung:
getEvents($('#myElemId')[0])
5 Stimmen
Unglücklicherweise, jetzt: bugs.jquery.com/ticket/10589
2 Stimmen
Unterstützen sowohl jQuery vor als auch nach 1.8:
var events = (jQuery._data || jQuery.data)(elem, 'events');
3 Stimmen
Beachten Sie, dass Sie die Dev-Tools von FF und Chrome (F12) verwenden können, um diese Ereignis-Listener zu sehen. Siehe developers.google.com/web/tools/chrome-devtools/debug/ y developer.mozilla.org/de-US/docs/Tools/Page_Inspector/How_to/