요소에 이벤트가 있는지 확인합니다.
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'과 같은 모든 이벤트로 채워진 객체가 반환됩니다.이 개체를 순환하여 이벤트 처리기가 수행하는 작업을 확인할 수 있습니다.
다음을 사용할 수 있습니다.
$("#foo").unbind('click');
모든 클릭 이벤트가 바인딩 해제되었는지 확인한 다음 이벤트를 첨부합니다.
요소에서 이벤트를 확인하는 방법
var events = $._data(element, "events")
$(document).on("event-name", "jq-selector", function() {/logic})을 사용하는 경우에는 직접 이벤트 핸들러에서만 작동합니다. 이 답변의 맨 아래에 getEvents 기능이 표시됩니다.
예:
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])
jquery 이벤트 필터 사용
이렇게 사용할 수 있습니다.
$("a:Event(click)")
아래 코드는 지정된 셀렉터에서 모든 클릭 이벤트를 제공합니다.
jQuery(selector).data('events').click
각각 또는 예를 들어 다음과 같은 검증을 위해 길이를 확인하여 이를 반복할 수 있습니다.
jQuery(selector).data('events').click.length
누군가에게 도움이 될 거라 생각했습니다.:)
저는 hasEventListener라는 플러그인을 작성했는데, 이 플러그인은 정확히 그렇게 합니다.
이게 도움이 되길 바랍니다.
이 작품은 발생한 사건의 대상과 유형을 보여주는 것입니다.
var foo = $._data( $('body').get(0), 'events' );
$.each( foo, function(i,o) {
console.log(i); // guide of the event
console.log(o); // the function definition of the event handler
});
저는 결국 이것을.
typeof ($('#mySelector').data('events').click) == "object"
언급URL : https://stackoverflow.com/questions/1515069/check-if-event-exists-on-element
'programing' 카테고리의 다른 글
MySQL 워크벤치에서 구문 오류를 무시하는 방법은 무엇입니까? (0) | 2023.08.28 |
---|---|
SQLSTATE[HY000] [2002] php_network_getadaddrinfo: getaddrinfo 실패: 이름 또는 servname이 제공되지 않았거나 알 수 없습니다. (0) | 2023.08.28 |
#1064 - phpMyadmin의 SQL 구문에 오류가 있습니다. (0) | 2023.08.28 |
iPhone X에서 UIView의 safeAreaInsets는 0입니다. (0) | 2023.08.28 |
GPS 좌표를 위해 데이터베이스에 중요한 숫자를 몇 개 저장해야 합니까? (0) | 2023.08.23 |