以下是我的代码:
$(".simpleCart_shelfItem button").click(function() {
$(this).prop('disabled', true);
$(this).addClass('disabled');
$(this).html("Adding <i class='icon-spinner9 spin'></i>");
var action = "add";
var queryString = "action="+action+"&pid="+this.value;
$.ajax({
url: "add_cart",
data: queryString,
type: "POST",
success:function(data){
if(data == 1)
{
$(this).prop('disabled', false);
$(this).removeClass('disabled');
$(this).html("Added In Cart");
}
},
error:function (){}
});
});
我在一个页面上有6个产品。如果用户单击特定产品的“添加到购物车”按钮,则此代码将执行并向服务器发送请求。
代码执行正常,我甚至得到了回复。
问题是,即使在获得成功函数未执行的响应之后,即此代码未执行...
$(this).prop('disabled', false);
$(this).removeClass('disabled');
$(this).html("Added In Cart");
它只执行输入点击功能时的代码,即此代码:
$(this).prop('disabled', true);
$(this).addClass('disabled');
$(this).html("Adding <i class='icon-spinner9 spin'></i>");
然后冻结上面的代码。
未执行成功功能。
答案 0 :(得分:1)
据我所知,当你在ajax调用中声明一个函数时,被点击元素的引用就会丢失。
所以,在$(&#34; .simpleCart_shelfItem按钮&#34;)的ajax成功函数中替换$(this)调用。
我认为这会奏效。