嗨我有一些代码,当被解雇时工作,但e.preventDefault();没有开火。
最初它是在每个循环的内部,当点击完成任务9x(取决于循环的数量)但e.preventDefault();工作正常。
任何帮助表示感谢(相对较新的JavaScript):
<script Content-Type: 'application/javascript'>
$('.cartAdd').click(function(e) {
e.preventDefault();
$(this).html('Adding Item To Cart')
element = $(this)
ajaxUrl = element.attr('href');
$.get(ajaxUrl + '&c=?', function(response) {
element.html('Item Added Successfully!');
element.css('background','#1150f1');
//$('#checkoutbtn').animate({backgroundColor: '#1150f1'}, 200)
setTimeout(function() {
element.html('Add To Cart');
element.css('background','green');
}, 5000);
}).error(function(error) {
element.html('Error adding to cart')
element.css('background','red');
setTimeout(function() {
element.html('Add To Cart');
element.css('background','none');
}, 5000);
})
});
答案 0 :(得分:1)
由于您要添加html 动态,因此您需要使用delegate()
或on()
。
<强>原因:强>
在页面加载时,页面中没有这些html元素,因此jquery不知道页面中存在这样的元素。因此Jquery提供on()
和delegate()
,它们将充当委托对于动态添加的html元素。
你应该使用
$('body').on('click','.cartAdd',function(e)
{
e.preventDefault();
});
或者您可以使用代理
$('body').delegate('.cartAdd','click',function(e)
{
e.preventDefault();
});
希望这有帮助, 谢谢