我初始化一些谷歌地圖,其中大量的數據通過ajax和標識符發送,但我遇到了一個奇怪的範圍問題(或我相信)。範圍與jQuery和谷歌地圖api
我初始化呼叫...
$(".dataMap").each(function(i, obj){
var mapID = $(this).attr('mapID');
if(mapID !== "undefined"){
var mapBox = $(this);
var mapBoxID = $(this).attr('id');
//get our data
var jsonp_url = "url-removed-for-security";
$.getJSON(jsonp_url, function(data){
//now we start creating our map.
//first, lets work on sizing.
var myOptions = {
zoom: 11,
center: new google.maps.LatLng(42.351391443036654, -83.09239196777344),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById(mapBoxID), myOptions);
}); // end of json call
}
});
這行工作
map = new google.maps.Map(document.getElementById(mapBoxID), myOptions);
但是,如果我改成這樣......
map = new google.maps.Map(mapBox, myOptions);
它拋出的錯誤:未捕獲「類型錯誤:無法設置屬性未定義的‘位置’」
我不明白爲什麼傳遞對象失敗。這與document.getElementById不等效嗎?如果不是,會是什麼?它顯然能夠檢測到我使用的div,因爲工作的例子工作,哈哈。它能夠從$(this)引用中獲取divID。我非常迷戀這一個。
這就是我一直在尋找的。我認爲直到這一點,我沒有意識到jQuery對象和DOM元素之間的區別,我只是認爲一個是指向另一個的指針。 –