jQuery에서 이벤트가 존재하는지 확인할 수 있는 방법이 있나요? 사용자 정의 네임스페이스 이벤트를 사용하는 플러그인에서 작업 중이며 이벤트가 요소에 바인딩되었는지 여부를 확인할 수 있기를 원합니다.
$('body').click(function(){ alert('test' )})
var foo = $.data( $('body').get(0), 'events' ).click
// you can query $.data( object, 'events' ) and get an object back, then see what events are attached to it.
$.each( foo, function(i,o) {
alert(i) // guid of the event
alert(o) // the function definition of the event handler
});
.data에 객체 참조(jQuery 객체는 아님)를 전달하고 두 번째 인수에 'events'를 전달하면 'click'과 같은 모든 이벤트로 채워진 객체를 반환하여 검사할 수 있습니다. 해당 객체를 반복하여 이벤트 핸들러가 수행하는 작업을 확인할 수 있습니다.
var events = $._data(element, "events")
>. 참고로 이 항목만 작동합니까 $ (document) 를 사용하는 경우, 직접 이벤트 핸들러도 오언 (", event-name" jq-selector" ";; / / 논리 함수 () {}), 이 질문에 게테벤츠 함수은 보려는 아래쪽에 있는 것입니다.
var events = $._data(document.getElementById("myElemId"), "events")
또는
var events = $._data($("#myElemId")[0], "events")
<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>
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;
}
사용 예시:
getEvents($('#myElemId')[0])
제이쿼리 이벤트 필터** 사용
다음과 같이 사용할 수 있습니다.
$("a:Event(click)")