2013-08-27 4 views
0

아래와 같은 코드가 있습니다.바인드 해제 후 바인딩 사용

HTML 코드 :

<div id="myButton">Click Here</div> 

JQuery와 코드 :

$("#myButton").unbind("click").bind("click",function(){ 
    alert("Working") 
}); 

요소를 결합하기 전에을 ('클릭') 바인딩을 해제 의 필요가 무엇입니까

?

바인딩 해제가 사용되지 않는 경우에도 작동합니다. 아래에 표시된 것

$("#myButton").bind("click",function(){ 
    alert("Working") 
}); 

어느 것이 가장 좋습니까? 차이점은 무엇입니까?

+0

참조 : http://stackoverflow.com/questions/1264353/what-does-bind-and-unbind-mean-in-jquery –

+0

jQuery1.7 ['on()']부터 (http : // api.jquery.com/bind/)를 권장합니다. 코드는'$ ("# myButton")이 될 것입니다.off(). on()'. – bhb

답변

1

이것은 다른 click 이벤트 수신기가 연결되어 있지 않다는 것을 확인합니다. 따라서 귀하의 처리기는 클릭시 작동하는 유일한 처리기가됩니다. #myButton

편집 : @ T.J. Crowder는 덧붙여 설명에서 unbind()bind()을 호출하는 것보다 다른 방식으로 연결된 핸들러에 영향을 미치지 않을 것이라고 언급했습니다.

이것은 즉,도 주목할 가치가있다 : jQuery를 1.7의 CSTE 연구진() 및 .OFF 현재

() 메소드가 부착 요소 이벤트 핸들러를 제거하기 위해 바람직하다

(jQuery.unbind() doc에서 발췌). 사실 unbind()is implemented internallyoff() 방법으로).

고려 :

$("#myButton").bind('click', function() { 
    console.log('click 1'); 
}); 

$("#myButton").unbind('click').bind('click', function() { 
    console.log('click 2'); 
}); 

// When clicked, prints "click 2" 

수스 :

$("#myButton").bind('click', function() { 
    console.log('click 1'); 
}); 

// note: no unbind here 
$("#myButton").bind('click', function() { 
    console.log('click 2'); 
}); 

// When clicked, prints "clicked 1" followed by "clicked 2" 
+0

* jQuery *와 연결된 핸들러 만 바인딩 해제된다는 점은 주목할 가치가 있습니다. 'onclick' 속성, onclick' 속성, 또는'addEventListener' 속성으로 첨부 된 것들을 언 바인드하지 않을 것입니다. 또한 버튼과 일치하는 위임 된 핸들러에는 영향을주지 않습니다. –

0

, 당신이 실제로 해당 요소와 관련된 모든 온 클릭 이벤트를 제거하는 요소에 바인딩 해제 "클릭"이벤트에 의해. 즉, HTML 양식의 입력 필드에 onclick 이벤트가 있고 함수를 호출하면 언 바인드됩니다. 바인딩을 해제 한 후에는 해당 요소의 onclick 함수를 호출 할 다른 클릭 이벤트를 바인딩합니다.()는 결합 해제가 엘리먼트에서 기존 이벤트 핸들러를 분리하는 데 사용된다

0

를 참조하십시오, 내가 #myButton 요소가 다른 click 핸들러 부착 여부를 모르겠어요,하지만 확실한 것은 unbind 방법은이 요소에있는 모든 핸들러를 제거, 나는 저자를 생각한다 한 번의 클릭 이벤트 만 트리거하려고합니다. 또한 브라우저의 디버그 관리자에 다른 이벤트 처리기가 있는지 확인할 수 있습니다. 희망이 도움이 될 것입니다.

관련 문제