2012-03-13 5 views
1

저는 BHO를 만들고 페이스 북 페이지에 스크립트를 삽입하고 있습니다. 내 질문은 다음과 같습니다. 때로는 페이지에 스크립트를 삽입하고 일부 이벤트를 이벤트 보유자 (예 :jQuery 이벤트가 꺼진 후 문서에 남아 있습니다.

$('#contentArea').on('click','#myId',Dosomething); 

)에 바인딩합니다.

그런 다음이 페이지에서 스크립트를 제거한 다음 다시 추가합니다 (이유는 묻지 않습니다. facebook은 항상 새 페이지에 대한 새 문서를 생성하지는 않지만 변경됩니다) 문서의 일부), 이번에는 이벤트가 여러 번 실행됩니다 (여러 번 제거한 다음 추가하는 경우에 따라 달라 지므로 1 제거 및 1 추가의 경우 2 회 제거, 2 회 제거의 경우 2 회 추가, 3 회 실행) 스크립트의 첫 번째 줄 내가 핸들러가 문서 또는 노드에서 제거되지 않습니다 아니까 내가 여기 실종입니다 ... 어쩌면 이벤트 무엇

$('#contentArea').off(); 

이라는면에도 불구 등) 버블 링 프로 블 여자 이름? 안녕, internet explorer 9에서 일하고 있습니다.

+0

질문은 분명 속성

$(this).attr('myBHOInstalled','true'); 

을 추가 할 수 있습니다 후 요소는 DOM이다. 잘 했어. –

답변

1

난 당신이 적어도

$('#contentArea').off("click"); 

을해야한다고 생각하거나 이벤트 리스너가, 어쩌면 제거되지 않을 수도

$('#contentArea').on('click','#myId'); 
0

점은 함수를 호출하는 위임 핸들러를 제거하는 경우 , 아마 그 이벤트와 요소에 바인딩 된 함수를 제거해야할까요?

$('#contentArea').off('click','#myId',Dosomething); 
+0

그것을 시도, doenst work..pls 자세한 정보에 대한 스테판 내 의견을 참조하십시오 :( – Fazi

0

API 설명서에 따르면 off()에는 적어도 하나의 인수가 필요합니다. 같은 "클릭" "keydown.myPlugin", 또는 ".myPlugin"로

이벤트 하나 이상의 공백으로 구분 된 이벤트 유형 및 옵션 네임 스페이스, 하거나 네임 스페이스.

이 방법으로 모든 click 이벤트를 바인딩 해제하십시오. $('#contentArea').off('click');

unbind()을 사용하여 모든 이벤트를 바인딩 해제 할 수도 있습니다.

인수가없는 가장 단순한 경우 .unbind()는 요소에 연결된 모든 처리기를 제거합니다.

+0

그래 ... 그게 내 부분에 심각한 실수 였어 .. 그런데 ... 문제를 해결 도움이되지 않았다 .. 나는 $ (('click', '# myId', Dosomething), 결과가 없습니다 ... 나는 첫 줄로 추가하려고했습니다. ('#contentArea') .off ('click' 스크립트에서도 결과가없는 문서를 완성한 후에 .. 네임 스페이스로 시도해야합니까? – Fazi

+0

친구의 친구 목록에서 자신의 정보 페이지로 이동할 때 페이스 북이 새 문서를 생성하지 않는다고 말하고 싶습니다. 다시 (다른 수단을 통해 내용을 생성합니다) 문제가 발생하기 시작하면 ... 페이지를 새로 고치려면 f5 키를 누르면 새 문서가 생성되고 이벤트가 다시 제대로 작동합니다. 친구 목록에서 정보 페이지로 돌아갈 때 문서 객체가 다시 동일하게 유지 될 때 내 스크립트가 2 번 실행되기 때문에 이벤트가 2 번 등록되고 2 번 실행되는 이유 – Fazi

+0

스크립트를 어떻게 다시로드하고 실제로해야합니까? – Stefan

0

더 나은 해결책은 요소에 핸들러가 있는지 먼저 확인하지 않는 이유입니다. 어떻게 그러한 일을 성취 할 수 있습니까? 쉬운, 우리는 우리가 처리기를 설치했는지 여부를 알려주는 요소에 대한 추적을 남깁니다.모든 그래서 우리는 단지에 개체 멤버를 추가 할 수 있습니다, 또는 우리가 다음

if($(this).attr('myBHOInstalled') !== 'true') { 
    installMyBHO($(this)); 

}

관련 문제