2016-12-29 411 views
1

我試圖刪除一個事件偵聽器,它是在函數內部創建的,但由於某種原因,它不起作用。如果我將它從功能中取出,它可以正常工作。下面的示例:刪除在函數內部創建的事件偵聽器? (JavaScript)

<body> 
<div id='myDiv'></div> 
<button type='submit' onclick='rel()'>RemoveEventListener</button> 

<script> 
function Mouse() { 
    myDiv.addEventListener('click', cK); 
    function cK() { 
     alert('You've clicked on myDiv!'); 
    } 
} 
function rel() { 
    myDiv.removeEventListener('click', cK); 
} 
Mouse(); 
</script> 
</body> 
+1

如何獲得對myDiv組件的引用?你使用相同的參考去除? – VadimB

+0

我有一個包含它的全局變量,但我忘了複製它 –

+0

@VadimB同樣用'id ='myDiv''將相應的HTMLElement暴露爲全局變量。 – dfsq

回答

5

如果ckMouse內部定義它不提供rel。將它移動到外部:

function cK() { 
    alert('You\'ve clicked on myDiv!'); 
} 
function Mouse() { 
    myDiv.addEventListener('click', cK); 
} 
function rel() { 
    myDiv.removeEventListener('click', cK); 
} 
+0

另請參閱VadimB對問題 – DhruvJoshi

+0

的評論謝謝,解決了問題 –

+0

可以在添加事件偵聽器之前調用remove函數嗎? –

相關問題