[javascript] jQuery를 사용하여 모든 클릭 이벤트 핸들러를 제거하는 방법은 무엇입니까?

문제가 있습니다. 기본적으로 사용자가 페이지에서 ‘편집’링크를 클릭하면 다음 Jquery 코드가 실행됩니다.

$("#saveBtn").click(function () {
    saveQuestion(id);
});

이렇게하면 저장 버튼의 onClick 이벤트가 saveQuestion()메소드를 호출 하고 ‘편집’링크를 클릭 한 질문의 ID를 전달합니다.

그러나 동일한 세션에서 사용자가 2 개의 질문에 대한 편집을 클릭하면 이전 click이벤트 처리기 를 덮어 쓰는 대신 대신 2 개의 이벤트 처리기가 실행됩니다. 하나는를 호출 saveQuestion(1)하고 다른 하나는를 호출 할 수 있습니다 saveQuestion(2). 이렇게하면 1 개의 질문이 다른 질문을 덮어 씁니다.

click버튼에 할당 된 모든 이전 이벤트 를 제거하는 방법이 있습니까?



답변

다음 과 같이 이벤트를 제거 하려면 off () 를 사용 합니다 .

$("#saveBtn").off("click");

그러나 이렇게하면 이 요소에 연결된 모든 클릭 이벤트 가 제거됩니다 . SaveQuestion이있는 함수가 유일한 이벤트 바인딩이면 위의 작업이 수행됩니다. 다음을 수행하지 않는 경우 :

$("#saveBtn").off("click").click(function() { saveQuestion(id); });


답변

버튼에 할당 된 모든 이전 클릭 이벤트를 제거하는 방법이 있습니까?

$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});


답변

$('#saveBtn').off('click').click(function(){saveQuestion(id)});


답변

사용했다면 …

$(function(){
    function myFunc() {
        // ... do something ...
    };
    $('#saveBtn').click(myFunc);
});

… 그러면 나중에 바인딩을 해제하는 것이 더 쉬울 것입니다.


답변

$('#saveBtn').off('click').on('click',function(){
   saveQuestion(id)
});

jquery의 끄기켜기 사용


답변