Javascript 绑定到多个按钮的函数正在共享内部变量
我将ajax调用绑定到多个按钮,这些按钮基于附加的数据属性是唯一的 现在,函数的内部变量是共享的。因此,如果我点击多个按钮(即,在之前的ajax请求完成之前),变量之间的相互写得太多了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
$('.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
。