我正在用javascript创建一个简单的购物车,没有按钮的购物车会删除一个项目是什么?
购物车是使用javascript即时创建的,因此页面加载时不会存在元素。但是,这应该不是问题吗?
$(".removeFromCart").on("click",function(e){
alert("GO AWAY PLEASE..");
var tuoteID = $(this).attr("data-id");
deleteFromCart(tuoteID);
});
元素(动态创建)看起来像这样:
<a href="#" class="removeFromCart" data-id="2">×</a>
但它不会触发。如果我将.replaceFromCart
替换为p
,则每次点击某个段落时都会触发。
这不是我第一次遇到.on()
的问题而且总是需要一半的头发来解决,所以也许有经验的人可以指出我做错了什么。
答案 0 :(得分:2)
您需要使用其他版本的jQuery on()函数进行事件委派。您必须为执行绑定代码的时间提供静态父级,或者您可以委派给body
或document
。
$(document).on("click",".removeFromCart", function(e){
alert("GO AWAY PLEASE..");
var tuoteID = $(this).attr("data-id");
deleteFromCart(tuoteID);
});
委派事件的优势在于它们可以处理来自的事件 稍后添加到文档中的后代元素。通过 选择一个保证在当时存在的元素 委托事件处理程序附加,您可以使用委托事件 避免频繁附加和删除事件处理程序jQuery doc。