2016-09-17 50 views
0

我有一個班級成員讓我們叫它刪除。所以調用它我寫this.remove(arg) 我正在建立一個按鈕表,我需要這個功能是一個事件。如何在不重新創建自己的循環中創建事件處理程序?

所以目前的代碼是

var me = this 
for (x iterations) { 
    button.addEventListener('click',function() { 
     me.remove(this) // <- document is passed via this. I need both contexts 
} 

顯然這是糟糕的代碼在每個重申的功能被重新創建。

remove.call() 

不會工作,因爲我沒有訪問新的上下文,直到它創建。

是否他們是一個更好的方式來編寫這個函數,而不是每次都重新創建函數?

+0

是不是要創建函數,每個循環迭代一個的多個副本的目標是什麼? –

+0

這個'真的想讓你想要嗎?它會參考按鈕。 –

+0

我認爲你已經[mcve]中的M有點太遠了(這可以改變),你可以擴展一下,理想情況下用**可運行的** Stack Snippet('<>'工具欄按鈕)顯示你在做什麼? –

回答

0

這不是清楚你問什麼,而是你能避免重新創建函數在循環:

var me = this; 
function removeButton() { 
    me.remove(this); 
} 
for (/*x iterations*/) { 
    button.addEventListener('click', removeButton); 
} 
+0

感謝您的示例。我認爲定義這樣的功能就像是一個捕獲。 – awlnx

相關問題