2015-04-01 99 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); 
} 
} 
//]]>