Javascript函数变量范围问题

时间:2015-03-16 16:51:53

标签: javascript jquery javascript-events

我有以下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函数时,对象总是引用循环中的最后一个条目。

有人可以帮我解决这个变量范围问题吗?

1 个答案:

答案 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();

        }
    }); 
});