Program Tip

jquery 이벤트 핸들러를 덮어 쓰는 방법

programtip 2020. 10. 23. 08:18
반응형

jquery 이벤트 핸들러를 덮어 쓰는 방법


간단한 코드로 문제를 설명하겠습니다.

var fireClick = function() { alert('Wuala!!!') };

$('#clickme').click(fireclick);
$('#clickme').click(fireclick);

이제 분명히 두 번 경고하지만 한 번만 경고해야합니다. 많은 방법을 시도했지만 결과가 없습니다.

감사.


jQuery 1.7부터는 off사용하여 이벤트 핸들러를 제거하고 on 을 사용하여 추가해야하지만 click속기 는 여전히 사용할 수 있습니다 .

$('#clickme').off('click').on('click', fireclick);
$('#clickme').off().on('click', fireclick);

원래 답변 :

모든 클릭 핸들러를 바꾸려면 먼저 함수 인수없이 unbind를 호출하십시오 . 모든 이벤트 처리기를 교체하려면 이벤트 유형을 지정하지 마십시오.

$('#clickme').unbind('click').click(fireclick);
$('#clickme').unbind().click(fireclick);

네임 스페이스를 사용하여 다른 리스너를 제거하지 않도록하십시오.

$('#clickme').off('click.XXX').on('click.XXX', fireclick);

다른 코드에서를 사용 XXX하지 않는 한, 알지 못했던 다른 동작을 엉망으로 만들지 않았는지 확인할 수 있습니다.


jQuery 함수 바인딩 해제사용 하여 첫 번째 이벤트를 제거 할 수 있습니다 .

var fireClick = function() { alert('Wuala!!!') };

$('#clickme').click(fireclick);
$('#clickme').unbind('click', fireClick); // fireClick won't fire anymore...
$('#clickme').click(fireclick); // ...but now it will

나는 여분의 호출을 제거하려고 노력하지만 tyhat이 부족하면 매번이 두 가지를 모두 호출 할 수 있습니다.

$('#clickme').unbind('click', fireclick);
$('#clickme').click(fireclick);

setInterval을 사용해야합니다. 문제는 동시에 두 개의 경고를 표시 할 수 없다는 것입니다. 첫 번째는 먼저 닫아야하고 두 번째는 화면에 나타나지 않습니다.

참고 URL : https://stackoverflow.com/questions/741628/how-to-overwrite-jquery-event-handlers

반응형