2016-06-23 2 views
-1

를 작동하지 않는 익명 함수 바인딩을 해제 :JQuery와 나는이 같은 함수가

function init() { 
    $('#someElement').unbind('change', init); 
    $('#someElement').chosen().change(function() { 
     init(); 
    } 
} 

그러나 unbindsecond executionduplicate 이벤트 리스너 작동하지 않습니다를.

그러나 $('#someElement').unbind()은 예상대로 작동합니다.

답변 : 내가 올바른 방법을 찾을 수 있습니다, 그것은 간단합니다

필요가 사용 :

function init() { 
    $('#someElement').one('change', function() { 
     init; 
    } 
} 
+0

ref 메소드를 사용하여 바인딩해야합니다 :'$ ('# someElement'). chosen(). change (init);'(또는 익명 함수를 사용하여 바인딩 해제 ...) –

답변

3

당신은 따라서를 전달 change 이벤트에 익명 기능을 제공하고 있습니다 바인드 해제시 init() 참조가 작동하지 않습니다.

것은 이것이 당신이 필요로 작동 이벤트를 부착 할 때 init()의 참조를 전달하기 위해 활용하려면 다음이 언 바인드/바인드 패턴이 조금 중복을 보인다

function init() { 
    $('#someElement').unbind('change', init).chosen().change(init); 
} 

참고. 위임 된 이벤트 핸들러는 사용자의 필요에 더 잘 맞을 수 있으므로 대신 찾아야합니다.

또한 unbind()은 오래된 것으로 간주되므로 대신 off()을 사용해야합니다.

+0

고맙지 만 작동하지 않습니다. 답변을 찾았으며 내 주제 메시지에 추가했습니다. –

관련 문제