Javascript 在空()后单击事件松散目标。追加()元素

Javascript 在空()后单击事件松散目标。追加()元素,javascript,jquery,html,click,Javascript,Jquery,Html,Click,我有一个函数addItems,它动态地将项目添加到元素,因此它清空div,并在每次调用该函数时添加项目 function addItems(){ /....../ $("#totalPremium").empty(); $("#totalPremium").append("<div>item</div>"); } 问题是,第一次添加一个项目时,我可以通过单击功能来选择它,但是在一个新项目被替换为前一个项目后,单击甚至似乎失去了目标,无法执行。我正在搜索

我有一个函数
addItems
,它动态地将项目添加到元素
,因此它清空
div
,并在每次调用该函数时添加项目

function addItems(){
   /....../
   $("#totalPremium").empty();
   $("#totalPremium").append("<div>item</div>");
}

问题是,第一次添加一个项目时,我可以通过单击功能来选择它,但是在一个新项目被替换为前一个项目后,单击甚至似乎失去了目标,无法执行。我正在搜索建议以使其生效。

您需要对动态添加的项目使用事件委派

$("#totalPremium").on('click','div', function () {
    //do stuffs
});

单击处理程序将仅应用于调用后出现的元素。如果删除元素并添加新元素,它们不会自动拥有clickhandler。每次创建新元素时都必须添加处理程序

+1,尽管这最终是为了后代而不是子代。我相信
'>div'
在委托选择器中是有效的。这与此
事件的内容有关。如果
div
有任何子体,则目标将是:()。
$(“#totalPremium”)。在('click','div',function(){//do stuff}
上尝试this@Deadlock谢谢,这很有效。
$("#totalPremium").on('click','div', function () {
    //do stuffs
});