我具有创建Google Map的功能以及创建标记,信息窗口并允许一些用户交互操作来控制地图的其他逻辑。
在使用jQuery和WordPress时,默认情况下,出于兼容性考虑,$功能被禁用。
为克服这个问题,我将所有JavaScript代码封装在以下代码块中:
(function ($) {
function initMap() {
console.log("Initmap start");
map = new google.maps.Map(document.getElementById("dealer-map"), {
center: new google.maps.LatLng(54.583408, -4.125605),
zoom: 5
});
setMarkers(map);
}
//...other code
}(jQuery));
(对不起,我不确定上面的名字叫什么,因此标题)
然后,Google Maps API代码中会有一个函数回调,一旦API加载,该函数便会调用initMap();
函数,但这是行不通的。我尝试通过Chrome开发者控制台手动调用此操作,但收到以下消息:
ReferenceError:未定义initMap
有什么办法解决吗?还是仅启用$功能会更容易?
答案 0 :(得分:0)
每次使用function
关键字时,您都在创建一个新的作用域。如果您使用的是函数表达式或函数语句,则适用。
您将需要在可以看到它的范围内使用该功能,否则您必须导出该功能以公开使用。
我对wordpress不够了解,无法讨论如何做到这一点。
function scope1() {
// This scope is private
function private() {
}
}
function scope2() {
// This is a whole different scope that cannot
// see anything inside of scope 1.
function private() {
}
}
答案 1 :(得分:0)
这是三种方法:
function initMap() {
(function($) {
/*...*/
})(jQuery);
}
或
function initMap() {
const $ = jQuery;
/*...*/
}
或
function init($) {
/*...*/
}
function initMap() {
init(jQuery);
}