2011-02-15 9 views
0

동일한 요소에 대한 클릭 이벤트 중에 요소에 대한 클릭 이벤트를 리 바인드하려고하면 약간의 불편 함이 있습니다.IE와 jquery 이벤트 바인딩

기본적으로 사용자가 요소를 클릭하면 일부 코드가 실행되고 해당 요소의 클릭 이벤트가 다른 기능을 가리 키도록 변경됩니다.

이제 IE와 별도로 모든 브라우저에서 정상적으로 작동합니다.

그러나 IE에서는 요소 클릭 이벤트가 가리키는 새 기능이 바인딩 될 때 해고되고 왜 내 그림의 수명을 지킬 수 없습니까?

아이디어가 있으십니까? 아래 코드 ...

<!DOCTYPE html> 
<html> 
<head> 

<script type='text/javascript' src='http://code.jquery.com/jquery-1.5.js'></script> 

<script type='text/javascript'> 

function setUpBind() 
{ 
    $("#foo").removeAttr("onclick"); 
    $("#foo").bind("click", function() {newBindFunction()}); 
    alert('First bind function'); 

} 

function newBindFunction() 
{ 
    alert('This is the new bind function.'); 
} 

</script> 

</head> 
<body> 

    <span id="foo" onclick="setUpBind()">Button 1</span> 


</body> 


</html> 
+0

IE 버전이 작동하지 않습니다. 나는 8로 테스트하고 올바르게 작동한다. – jrey

+0

"버튼 1"을 클릭하면 두 기능이 모두 작동한다. IE 8의 모든 기능 – Jerryf

답변

1

jquery에서 모두 수행하십시오. 당신이 HTML을 통해를 첨부 할 것 때문에 여기

$(function() { 

     function firstHandler() { 
      $('#foo').unbind('click', firstHandler); 
      $('#foo').click(secondHandler); 
      alert('First Handler'); 
     } 

     function secondHandler() { 
      alert('Second Handler');   
     } 

     $('#foo').click(firstHandler); 
}) 

http://jsfiddle.net/gNvQg/3/는, JQuery와없이 작동하는 jsfiddle의 http://jsfiddle.net/gNvQg/2/

내가 배운 교훈이 "모두와 특성/속성 스타일의 핸들러를 혼합하지 마십시오 생각 addEventListener/attachListener를 통해 추가 된 이벤트 ". IE의 버그는 jquery를 통해 핸들러를 설정하고 이전에 속성 (특성) 핸들러와 연결되어있을 때만 발생합니다.