我有一个功能,我用它来填充带有数据的Google地图画布。当我单击菜单项并初始化它时,该功能完美运行,但是当我只运行$(document).ready中的函数时,它不起作用。我已经尝试通过$(document).load初始化它,但也没有运气。现在奇怪的是,如果我在特定行添加一个警告,该函数初始化就好了。我还注意到,如果我没有初始化它,我实际上需要在函数第一次运行之前两次单击其中一个菜单项。所以基本上,函数的第一次初始化就有了。它可能与第一次加载XML有关,不确定......
这是功能:
function getMap($li, $province, $zoom) {
var $lat_array = [];
var $long_array = [];
$li.addClass("province-active");
$li.siblings("li").removeClass("province-active");
$li.css("background-image", "url(img/minus-icon-storefinder.png");
$li.siblings("li").css("background-image", "url(img/plus-icon-storefinder.png");
$li.siblings("li").children(".province-sub-menu").empty();
$li.children(".province-sub-menu").empty();
$.get('xml/map-data.xml', function(data) {$xml_text = data;}, 'text'); //If I add an alert here, the function works fine the first time
var xml = $xml_text;
var xmlDoc = $.parseXML( xml );
var $xml = $( xmlDoc );
$province = $xml.find('province[category="' + $province + '"]');
$(".store-locations").empty();
$(".store-locations").append("<h3>Click on the store for more information:</h3>");
$province.find('shop').each(function(i) {
$suburb = $(this).find("suburb").text();
$shop = "<div class='shop'><h4>" + $suburb + ", <span>" + $(this).find("city").text() + "</span></h4><p>" + $(this).find("tel").text() + "</p><p>" + $(this).find("fax").text() + "</p>" + "<a href=''>View store details</a></div>";
$li.children(".province-sub-menu").append("<li data-suburb='" + $suburb + "'>" + $(this).find("suburb").text() + "," + $(this).find("city").text() + "</li>");
$(".store-locations").append($shop);
$lat_array[i] = $(this).find("lat").text();
$long_array[i] = $(this).find("long").text();
});
initialize($lat_array, $long_array, $zoom);
}
以下是点击之外的函数初始化:
var $head_office = $("#head-office");
var $province = "Head Office";
getMap($head_office, $province, 17);
这是点击功能:
$(".provinces > ul > li").click(function() {
$li = $(this);
$province = $li.children("p").text();
getMap($li, $province, 15);
});
谢谢!
答案 0 :(得分:2)
您不是在等待GET请求完成。 GET之后的代码需要在onsuccess处理程序中。
等待警报清除,你给它足够的时间意外完成。