Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绑定到多个按钮的函数正在共享内部变量_Javascript_Jquery_Ajax - Fatal编程技术网

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

Javascript 绑定到多个按钮的函数正在共享内部变量,javascript,jquery,ajax,Javascript,Jquery,Ajax,我将ajax调用绑定到多个按钮,这些按钮基于附加的数据属性是唯一的 现在,函数的内部变量是共享的。因此,如果我点击多个按钮(即,在之前的ajax请求完成之前),变量之间的相互写得太多了 $('.btn-merge').click(function(){ $this = $( this ); pid = $this.data('pid'); cid = $this.data('cid'); $this.removeClass('btn-primary').addCl

我将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');
    });
});

您正在使用全局变量


在回调函数中,在变量前面加上
var
,以确保它们不存在。

这解决了我的问题,但我不明白为什么。。。整个过程都是在一个自调用匿名函数中阅读更多关于Javascript中变量作用域的信息。通常,如果不使用
var
声明变量,则相当于声明
window.var