jquery每个都不能正常工作

时间:2013-04-12 02:26:34

标签: jquery google-maps

我试图遍历一个集合并尝试在循环中设置一个全局变量。由于某种原因,循环在其他代码完成执行后执行。

示例

在ready函数之外声明是

var lt1,lt2; 

循环

lt1="opp";
$('#map_block').gmap().bind('init', function(ev, map) {
    $.each(places,function(i, val) {
        lt2 = val['h_longitude'];   
        lt1 = (val['h_latitude']);
        clientPosition1 = new google.maps.LatLng(val['h_latitude'], val['h_longitude']);  
        console.log(lt1);
        $('#map_block').gmap('addMarker', {'position': clientPosition1 , 'bounds': false, 'icon':hicon }).click(function() {$('#map_block'). gmap('openInfoWindow', {'content':' Test'});
    });
});
console.log(lt1);

控制台显示如下

opp
41.222
42.4455
43.5566

似乎循环在代码执行后console.log(lt1)执行。

1 个答案:

答案 0 :(得分:1)

这是因为地图以异步方式加载。 “当地图完全初始化(带边界)时,它将触发'init'事件。” source

因此,您的第一个输出是底部console.log,结果为opp。稍后,将加载映射,并在执行回调匿名函数时触发init事件。该函数使用定义的each循环进行迭代并输出其结果。这就是为什么你看到事件发生的顺序。

如果需要在init之后执行代码,请考虑在init的回调中调用的函数中执行该代码。