2011-07-28 2 views
0

그래서 나는jQuery 함수 내 모든 것을 바인딩 해제 하시겠습니까?

function onLoadMe() { 
//stuff in function 
} 

같은 함수 그리고 두 번째 기능이

function onLoadMeSecond() { 
    //stuff in function 
    } 
나는 시도하고 페이지로드에 onLoadMe()을 결합,하지만 onLoadMe() 모든 것을 바인딩을 해제하고 두 번째 기능을로드 할

요소에 대한 onLoadMeSecond()?

jQuery('#some-id').click(function() { 
    jQuery(this).unbind(onLoadMe()); 
    onLoadMeSecond(); 
}); 

어떻게 이상 작동하지 않습니다으로이 작업을 수행 할 수 있습니까?

편집 : 참조 예를 http://jsfiddle.net/cer9R/5/

+0

jsfiddle 샘플의 논리 흐름에 문제가 있습니다. 코드에서 정확히 무엇을하려고합니까? –

+0

논리 문제가 무엇인지 모르시겠습니까? @ http://jsfiddle.net/cer9R/5/ - 기본적으로'onLoad()'가로드되어야하고'test3'을 클릭하면'unbind (onLoad)'해야하고 'test2'를 보여 주시겠습니까? 그러나 그것은 doesnt한다? – Tom

답변

1

이 올바른 구문은입니다.

JsFiddle 예제에서는 페이지로드가 아닌 문서 준비에 대한 핸들러를 바인딩합니다. 바인딩을 해제하려면 $(document).unbind('ready')을 사용할 수 있습니다. 물론, 문서 준비 이벤트를 사용하여 (이미 완성 된) 문서 준비 처리기를 바인딩 해제하는 클릭 핸들러를 바인딩하면 전혀 이해가되지 않습니다.

+0

범례 - 작동하는 것처럼 보입니다 :-) @ http://jsfiddle.net/cer9R/8/을보세요 -하지만 여전히'# test'를 클릭하면 작동하는 것 같습니다. 즉 클릭 이벤트가 바인딩 해제되지 않았습니까? – Tom

+0

클릭 핸들러를 바인딩 해제하려는 경우'$ ('# test'). unbind ('click')'을 사용해야합니다. 귀하의 질문에 대한로드 처리기 바인딩을 이해해야합니다. – Tgr

+0

잘'onLoad' 내에 포함 된 모든 것을 실제로 바인딩 해제 하시겠습니까? 즉 클릭 여부와 관계없이? – Tom

0

이 유 시도 않았다 같이 쓰기?

jQuery(this).unbind("onLoadMe"); 

아니면 그냥이

jQuery(this).unbind(); 
0

는 때어 매개 변수에서 ()을 제거

jQuery('#some-id').click(function() { 
    jQuery(this).unbind(onLoadMe); 
    onLoadMeSecond(); 
}); 

onLoadMe 대신 onLoadMe()

+0

수정 - 함수에 대한 포인터를 제공하는 대신 함수를 호출합니다. – Soren

+0

@Makram @Soren - 문제가있는 것 같습니다. 즉 FF로 Firebug가있는 http://jsfiddle.net/cer9R/1/을 확인하십시오. 생성 된 에러가'types.split is not function'과 같은 것을 볼 수 있습니다. – Tom

+0

뭐라고 요? 그것은 .bind (http://api.jquery.com/unbind/)가 어떻게 작동하는지 전혀 아닙니다. 귀하는 그것을 이벤트 유형 또는 이벤트 객체로 전달해야합니다. 그리고로드 이벤트는'window' 객체에 바인딩됩니다. – Tgr

관련 문제