绑定到多个按钮内部变量的函数正在共享

时间:2014-03-22 19:46:32

标签: javascript jquery ajax

我将ajax调用绑定到多个基于附加数据属性唯一的按钮。

现在共享函数的内部变量。所以,如果我点击多个按钮(即在之前的ajax请求完成之前),变量会相互覆盖....

$('.btn-merge').click(function(){
    $this = $( this );
    pid = $this.data('pid');
    cid = $this.data('cid');
    $this.removeClass('btn-primary').addClass('btn-warning').prop('disabled',true).closest('li.suggestions').addClass('waiting-merge');
    putData = {
        catalogId : cid,
        productId : pid
    };
    $.post("///url///",putData,function (returnData){
        if (returnData === 'true'){
            suggestion = $this.removeClass('btn-warning').addClass('btn-success').closest('li.suggestions').removeClass('waiting-merge').addClass('success-merge').appendTo('ul.catalog-products').slideDown();

            suggestion.find('.btn-unmerge').data('cid',cid).show().prop('disabled',false).removeClass('btn-success').addClass('btn-danger');

            suggestion.find('.suggestion-cid').text('Catalog ID:'+cid);
        }
        else 
            $this.removeClass('btn-warning').addClass('btn-danger').removeAttr('disabled');
    });
});

1 个答案:

答案 0 :(得分:1)

您正在使用全局变量。

在回调函数中,使用var作为前缀变量,以确保它们不leak the scope