好的,这感觉就像一个基本问题,但我无法找到任何信息,所以我走了。
所以我有一个创建addNewNode(event)
节点的函数(<li>
),并将其附加到<ul>
。单击按钮即可触发此功能。 <li>
节点在附加到removeThisNode(event)
子节点时附加了一个事件侦听器(<ul>
),以便稍后删除它。
我需要在<li>
函数中获取removeThisNode(event)
节点。在这种情况下,event.target是按钮。如何获取<li>
节点?我是否必须将我刚刚创建的<li>
节点传递给它自己的事件监听器?还有另一种方式(没有jquery)?
(编辑)样本:
var addNewNode = function(){
var ulNode = document.getElementById("data-list");
var newLiNode = document.createElement("LI");
newLiNode.appendChild(document.createTextNode("test text"));
newLiNode.addEventListener("click",function(event){removeThisNode(event)})
ulNode.appendChild(newLiNode);
}
var removeThisNode = function(event){
var liNode = event.target; // <-- liNode comes up as the button in the debugger
liNode.parent.removeChild(liNode);
}
window.onload = function(){
var button = document.getElementById("add-data-button");
button.addEventListener("click",function(){addNewNode()});
}
答案 0 :(得分:1)
哎呀,误报。我将事件参数从一个eventListener(按钮单击)传递到下一个,所以它保持event.target相同!
var addNewNode = function(event){ //it was taking this event parameter
var ulNode = document.getElementById("data-list");
var newLiNode = document.createElement("LI");
newLiNode.appendChild(document.createTextNode("test text"));
newLiNode.addEventListener("click",function(event){removeThisNode(event)}) // <-into here
ulNode.appendChild(newLiNode);
}