我有一个jQuery事件,在调用警报之前工作正常。该函数调用服务器上的脚本,该脚本将一个项目(在数据库中插入一行)添加到购物车。购物车中只允许有八个商品,因此当用户尝试添加第九个商品时,会向jQuery脚本返回一条不允许的消息。这是jQuery脚本:
jQuery(document).on('click', 'a.add.module, a.remove.module', function(e) {
if (blnProcessing == true) {
return false;
} else {
blnProcessing = true;
}
e.preventDefault();
objLink = jQuery(this);
strLink = objLink.attr('href');
if (objLink.hasClass('add')) {
objLink.text('Adding');
} else {
objLink.text('Wait');
}
jQuery.get(strLink, function(data) {
if (data.success) {
if (data.success != true) {
alert(data.success); // message that says this is not allowed -- this part stops the script from functioning further
} else {
// this part works
jQuery('#cart').load('/study-clubs/modules/cart', function(){
if (objLink.hasClass('add')) {
strNewLink = strLink.replace('add', 'remove');
objLink.attr('href', strNewLink);
objLink.removeClass('add').addClass('remove').text('Added');
} else if (objLink.hasClass('remove')) {
strNewLink = strLink.replace('remove', 'add');
objLink.attr('href', strNewLink);
objLink.removeClass('remove').addClass('add').text('Add');
}
blnProcessing = false;
});
}
} else {
alert(data.error);
blnProcessing = false;
}
}, 'json');
});
通常,通过这种行为,您可以使用$(document).on('click', '#someID', function() ...
。但我已经在使用它了。所以我需要重新附加事件监听器或其他东西。如何在警报后让它工作?
答案 0 :(得分:2)
如果data.success
包含在布尔上下文中计算结果为true但不等于true
的值(执行包含alert(data.success)
的块),则blnProcessing
标志永远不会重置。
FWIW,我意识到它有时需要额外的一双眼睛,但你真的应该能够通过在Firebug(或其他一组开发人员工具)中逐步执行代码来解决这个问题。