我有以下Javascript功能:
$('div[id^="event"]').each(function( index ) {
fullID = $(this).attr('id');
object = $(this);
idOnly = fullID.replace( /^\D+/g, '');
var jqxhr = $.ajax({
type: 'POST',
url: '/welcome',
data: {
'lat': lat,
'lon': lon ,
'eventID': idOnly
},
success: function(msg){
object.show();
}
});
});
我希望这段代码可以做到以下几点:
对于每个具有以事件开头的ID的div id,获取div元素id的数字部分(例如,一个id可能为'event39410') - 所以得到'39410'片段 - 发送它将2个变量添加到AJAX服务中 - 当响应返回时,显示id为'event39410'的div。
ajax组件工作正常 - 但问题是,如果我有10个这样的事件标签,我得到10个ajax调用到我的后端,但我只得到最后一个'事件'div显示 - 这表明通过调用success函数时,对象总是引用循环中的最后一个条目。
有人可以帮我解决这个变量范围问题吗?
答案 0 :(得分:2)
在这3个全局变量前面需要var
!
$('div[id^="event"]').each(function( index ) {
var fullID = this.id;
var object = $(this);
var idOnly = fullID.replace(/^\D+/g, '');
var jqxhr = $.ajax({
type: 'POST',
url: '/welcome',
data: {
'lat': lat,
'lon': lon ,
'eventID': idOnly
},
success: function(msg){
object.show();
}
});
});