由于我的代码到处都是,所以很难向您展示,但我想做的是:
我在一个函数中使用.innerHTML
将html代码注入到DOM中,我希望在这一步中添加一个单击事件到被注入的图标上,因为此时我知道它的id。所以在注入后,我写下:
document.getElementById(product.id+"x").addEventListener("click", removeItem);
product.id
在上面创建,这个元素是一个'X'按钮,当单击时将从屏幕中移除。
问题是,由于屏幕上要显示许多项目,所以这段代码会运行多次。当完成后,只有最后一个事件在按下'X'按钮时才会触发。
有什么建议吗?
编辑:
我无法在这个项目中使用jquery。
以下是我的代码:
function createHTML(targetID, product) {
var target = document.getElementById(targetID);
total = (parseFloat(total) + parseFloat(product.price)).toFixed(2);;
target.innerHTML += '<article class="item" id="'+product.id+'"><img class="item_img" src="../'+product.image+'" width=100 height=100><h1 class="item_name">'+product.name+'</h1><p class="item_description">'+product.desc+'</p><h1 class="item_quantity">Quantity: '+product.quantity+'</h1><h1 class="item_price">£'+product.price+'</h1><i id="'+product.id+'x" class="fa fa-times"></i></article>';
document.getElementById(product.id+"x").addEventListener("click", removeItem, true);
}
闭包
http://stackoverflow.com/questions/17892367/javascript-listens-for-events-only-on-the-last-node-specified?rq=1 - DhruvPathak