我正在尝试为动态加载的卡上的产品创建一个添加到购物车的功能。我有类add-cart的按钮。我正在尝试在单击时将产品附加到UL中,但是用一个简单的警告来测试我的代码。下面是我的HTML代码:
function loadCard(id, name, imgSrc, price) {
var template =
'<div class="pork-items col-lg-3 col-md-4 col-sm-6">\
<div class="card h-100">\
<div class="card-header">'+ name + '</div>\
<img src="' + imgSrc + '" alt="' + name + '">\
<div class="card-body">\
<h2>' + price + '</h2>\
<div class="d-grid gap-2">\
<button type="button" id="cart'+id+'" class="add-cart btn btn-lg btn-danger">Add to cart</button>\
</div>\
</div>\
</div>\
</div>' ;
var cardContainer = document.getElementById('cardContainer');
cardContainer.innerHTML += template;
}
这就是我目前对jquery所做的尝试。在我真正让cart做一些有意义的事情之前,只是想让它发出警报:
$(document).ready(function(){
$(document).on('click', '.add-cart', function(){
alert ("added to cart");
})
});
按钮没有按我希望的方式响应。有人知道解决这个问题的方法吗?
2条答案
按热度按时间l5tcr1uw1#
在已经添加html标记之后添加事件处理程序。如下所示:
dxpyg8gm2#
我会添加一个事件侦听器到包含您的产品的div,如下所示,虽然产品不是动态创建的,但如果动态创建的产品在产品列表div中,这将适用于这些产品。
问题是当你创建你的事件监听器时,动态创建的产品还不存在,通过将你的事件监听器添加到初始加载时就存在的DOM元素中,你可以避免这个问题。例如:
这个函数会监听id为
productList
的DOM元素中的任何click
事件,然后检查点击的元素是否具有addToCart
类,如果是,则运行函数。初始化此代码时,不需要存在具有.addToCart
的元素,只需要存在id为productList
的父div。您可以将其附加到您的
body
,但这样会出现性能问题,您不希望每次单击都检查是否是向购物车添加商品的请求。您应该找到最具体的元素,其中包含所有产品卡。该示例已完全注解。
第一次