프로그래밍 언어/jQuery, ajax

jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법

Rateye 2021. 10. 13. 11:58
728x90
반응형
질문 : jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

input type="image" 있습니다. 이것은 Microsoft Excel의 셀 노트처럼 작동합니다. 사람이있는 텍스트 상자에 숫자를 입력하면 input-image I 설정,과에 대한 이벤트 핸들러 짝을 input-image . 그런 다음 사용자가 image 클릭하면 데이터에 메모를 추가하는 작은 팝업이 표시됩니다.

내 문제는 사용자가 텍스트 상자에 0을 입력 할 때 input-image 의 이벤트 처리기를 비활성화해야한다는 것입니다. 다음을 시도했지만 아무 소용이 없습니다.

$('#myimage').click(function { return false; });
답변

jQuery 1.7 이상에서는 이벤트 API가 업데이트되었으며 .bind() / .unbind() 는 이전 버전과의 호환성을 위해 계속 사용할 수 있지만 선호되는 방법은 on () / off () 함수를 사용하는 것입니다. 이제 아래는,

$('#myimage').click(function() { return false; }); // Adds another click event
$('#myimage').off('click');
$('#myimage').on('click.mynamespace', function() { /* Do stuff */ });
$('#myimage').off('click.mynamespace');

예제 코드에서는 이전 클릭 이벤트를 재정의하지 않고 단순히 이미지에 다른 클릭 이벤트를 추가하는 것입니다.

$('#myimage').click(function() { return false; }); // Adds another click event

그러면 두 클릭 이벤트가 모두 시작됩니다.

사람들이 말했듯이 unbind를 사용하여 모든 클릭 이벤트를 제거 할 수 있습니다.

$('#myimage').unbind('click');

단일 이벤트를 추가 한 다음 제거하려면 (추가되었을 수있는 다른 이벤트를 제거하지 않고) 이벤트 네임 스페이스를 사용할 수 있습니다.

$('#myimage').bind('click.mynamespace', function() { /* Do stuff */ });

이벤트 만 제거하려면 :

$('#myimage').unbind('click.mynamespace');
출처 : https://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler-in-jquery
728x90
반응형