2015-04-01 77 views
0

我得到一個函數,在您使用目標Event和removeChild雙擊它之後1秒鐘刪除元素。如下圖所示:使用javascript刪除元素的問題

function remove(e) { 
    var target = e.target; 
    setTimeout(function(){ 
     target.parentNode.removeChild(target); 
    }, 1000); 
} 
document.addEventListener("dblclick", remove, false); 

它的工作,你雙擊元素(只有在這種情況下,一個平方),它就會消失一秒鐘後。但是,如果你雙擊它外面的空間(身體我想),然後一切都被刪除。 jsfiddle的演示:https://jsfiddle.net/8ma5ayqj/

有沒有一種方法來防止這種情況發生,而不直接提到形狀?就像如果有幾個不同的divs我想這樣的事情發生。

+0

您的活動連接到'document'。將它附加到元素本身,你甚至不必使用事件對象。 – PHPglue 2015-04-01 23:18:30

+0

感謝您的回答,但如果頁面上有多個div我想要應用於此?說20個不同的方格。 – qua1ity 2015-04-02 09:28:53

回答

0

您已將addEventListener設置爲整個document。你可以寫這樣的東西:

yourSquareNode.addEventListener("dblclick", remove, false); 

或者你可以在函數中檢查目標是否是藍色方塊本身。

if(e.target == yourSquareNode){ 
    … 
} 

否則該事件適用於document

+0

感謝您的回答,但如果頁面上有多個div需要應用,該怎麼辦?說20個不同的方格。 – qua1ity 2015-04-02 09:28:39

+0

然後使用第二個代碼塊中的'if'語句並測試某些屬性。例如,所有將要消失的'div'都有'willDisappear'類。然後,您將事件偵聽器應用於'document'並測試類似if(e.target.classList.contains('willDisappear'))'的東西。 – Xufox 2015-04-02 13:49:09

0

瞭解這一點:

//<![CDATA[ 
var pre = onload; 
onload = function(){ 
if(pre)pre(); 
var doc = document, bod = doc.body; 
function E(e){ 
    return doc.getElementById(e); 
} 
E('#clickId').onclick = function(){ 
    this.parentNode.removeChild(this); 
} 
} 
//]]>