2012-09-17 291 views
0

可能重複:
JavaScript: remove event listener如何刪除事件偵聽器?

我試圖從導航刪除一些事件監聽器,經過 「開始」 按鈕被點擊。我似乎無法得到任何東西發射。

這裏是用做進出口代碼:

var startButton = document.getElementById('startButton'); 

startButton.addEventListener('click', function() { 
    hrNav.removeEventListener('mousedown', highlight, false); 
    alert('Did it remove the listener?'); 
}, false); 

,即時通訊試圖刪除事件偵聽是:

if(hrNav.addEventListener){ 
    hrNav.addEventListener('mousedown', highlight, false); 
    return true; 
} else { 
    hrNav.attachEvent('on'+'click', highlight); 
    return true; 
} 

所有這一切都被包裹在一個jQuery document.ready功能。

+0

什麼讓你覺得'removeEventListener' *不*移除事件偵聽器? – 0x499602D2

+0

是否有任何元素下的啓動按鈕? –

+0

@David我認爲問題在於'startButton'的eventListener沒有觸發。 –

回答

0

既然你說你使用jQuery。嘗試這樣:http://jsfiddle.net/MmFb2/4/

JS

$(function(){ 
    var startButton = $('#startButton'); 
    var hrNav = $('#hrNav'); 

    startButton.bind('click', function() { 
     hrNav.unbind('click'); 
    }); 

    var toggle = false; 
    hrNav.bind('click', function(){ 
     var ele = $(this); 
     if(toggle){ 
      ele.css('background-color', ''); 
     }else{    
      ele.css('background-color', 'yellow'); 
     } 
     toggle = !toggle; 
    }); 
}); 

HTML

<input id="startButton" type="button" value='click to disable' /> 
<div id="hrNav">Click me to highlight</div>​ 
+0

「去除綁定」與刪除我之前設置的事件偵聽器相同嗎? – mdance

+0

是的,它是jQuery對該操作的抽象。而不必考慮特定瀏覽器的所有特性。 jQuery創建了一個單一的入口點,以抽象出所有這些差異,使開發人員可以專注於手頭的任務,而不是如何在IE6-10,Firefox,Chrome,Opera,Safari等中實現它。這不僅僅適用於事件綁定/解除綁定,還有DOM操作和DOM元素檢索。我認爲值得你投資。 –

相關問題