있습니다 input type="image"
. 이것은 Microsoft Excel의 셀 노트처럼 작동합니다. 누군가 가이 텍스트 상자에 숫자를 입력하면에 input-image
대한 이벤트 핸들러를 설정합니다 input-image
. 그런 다음 사용자가를 클릭 image
하면 데이터에 메모를 추가 할 수있는 팝업이 나타납니다.
내 문제는 사용자가 텍스트 상자에 0을 입력하면 input-image
의 이벤트 핸들러 를 비활성화해야한다는 것 입니다. 나는 다음을 시도했지만 아무 소용이 없다.
$('#myimage').click(function { return false; });
답변
jQuery ≥ 1.7
jQuery를 이후 이벤트 API가 업데이트 1.7로, .bind()
/ .unbind()
여전히 이전 버전과의 호환성을 위해 사용할 수 있지만 선호하는 방법은을 사용 ) (에 / () 오프 기능. 아래는 이제
$('#myimage').click(function() { return false; }); // Adds another click event
$('#myimage').off('click');
$('#myimage').on('click.mynamespace', function() { /* Do stuff */ });
$('#myimage').off('click.mynamespace');
jQuery <1.7
예제 코드에서는 이전 클릭을 재정의하지 않고 이미지에 다른 클릭 이벤트를 추가하기 만하면됩니다.
$('#myimage').click(function() { return false; }); // Adds another click event
그런 다음 두 클릭 이벤트가 모두 시작됩니다.
사람들이 말했듯이 unbind를 사용하여 모든 클릭 이벤트를 제거 할 수 있습니다.
$('#myimage').unbind('click');
단일 이벤트를 추가 한 다음 추가했을 수있는 다른 이벤트를 제거하지 않고 이벤트를 제거하려는 경우 이벤트 이름 간격을 사용할 수 있습니다.
$('#myimage').bind('click.mynamespace', function() { /* Do stuff */ });
이벤트 만 제거하려면 :
$('#myimage').unbind('click.mynamespace');
답변
이 질문에 대한 답변이 제공되지 않았지만 live () 메서드를 사용하여 이벤트를 활성화 / 비활성화 할 수도 있습니다 .
$('#myimage:not(.disabled)').live('click', myclickevent);
$('#mydisablebutton').click( function () { $('#myimage').addClass('disabled'); });
이 코드를 사용하면 #mydisablebutton을 클릭하면 #myimage 요소에 비활성화 된 클래스가 추가됩니다. 이렇게하면 선택기가 더 이상 요소와 일치하지 않고 ‘disabled’클래스가 제거되어 .live () 선택기가 다시 유효해질 때까지 이벤트가 시작되지 않습니다.
이것은 해당 클래스를 기반으로 스타일을 추가함으로써 다른 이점도 있습니다.
답변
이벤트 에 한 번만 응답 하려면 다음 구문이 실제로 유용합니다.
$('.myLink').bind('click', function() {
//do some things
$(this).unbind('click', arguments.callee); //unbind *just this handler*
});
arguments.callee를 사용 하면 하나의 특정 익명 함수 처리기가 제거되어 주어진 이벤트에 대해 단일 시간 처리기가 있습니다. 이것이 다른 사람들을 돕기를 바랍니다.
답변
바인딩 해제 기능을 사용하여 수행 할 수 있습니다.
$('#myimage').unbind('click');
jquery에서 동일한 객체 및 이벤트에 여러 이벤트 핸들러를 추가 할 수 있습니다. 이것은 새로운 것을 추가해도 기존의 것을 대체하지 않는다는 것을 의미합니다.
이벤트 네임 스페이스와 같은 이벤트 핸들러를 변경하기위한 몇 가지 전략이 있습니다. 온라인 문서에는 이것에 관한 몇 페이지가 있습니다.
이 질문을보십시오 (바인드 해제 방법을 배웠습니다). 답변에 이러한 전략에 대한 유용한 설명이 있습니다.
답변
아마 바인딩 해제 방법이 당신을 위해 작동합니다
$("#myimage").unbind("click");
답변
prop과 attr을 사용하여 이벤트를 null로 설정해야했습니다. 나는 하나 또는 다른 것으로 그것을 할 수 없었다. 또한 .unbind를 작동시킬 수 없었습니다. TD 요소를 작업 중입니다.
.prop("onclick", null).attr("onclick", null)
답변
이 방법으로 이벤트가 첨부 되고 대상이 연결 해제되는 경우 :
$('#container').on('click','span',function(eo){
alert(1);
$(this).off(); //seams easy, but does not work
$('#container').off('click','span'); //clears click event for every span
$(this).on("click",function(){return false;}); //this works.
});