2011-02-15 156 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 2011-02-15 16:50:05

回答

1

這一切都來自jquery! http://jsfiddle.net/gNvQg/3/

$(function() { 

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

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

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

這裏有沒有jQuery的工作原理的jsfiddle,因爲你似乎想通過HTML附上他們http://jsfiddle.net/gNvQg/2/

我覺得學到的教訓是「不要混合使用這兩個屬性/屬性風格的處理程序事件通過addEventListener/attachListener添加「。我觀察到,只有當您通過jquery設置處理程序時,纔會發生IE的錯誤,並且它之前已經附帶了屬性(屬性)處理程序