我正在尝试循环遍历集合并尝试在循环中设置全局变量。由于某种原因,循环在其他代码完成执行后执行。
示例
在就绪函数之外声明
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)
执行代码之后执行的。
最佳答案
这是因为 map 是异步加载的。 “本地图完全初始化(有边界)时,它将触发‘init’事件。” source
因此,您的第一个输出是底部的 console.log,结果是 opp
。稍后,加载 map ,并触发 init 事件,执行回调匿名函数。该函数使用定义的 each
循环进行迭代并输出其结果。这就是为什么您会看到事件发生的顺序。
如果您需要在 init 之后执行代码,请考虑在 init 回调中调用的函数中执行该代码。
关于jquery 每个都不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962088/