欺骗访问加载范围内定义的函数

时间:2012-10-29 15:51:56

标签: javascript jquery

我的Code

<a href="javascript:void(0);" onclick="myFunction(this)">Call Function</a>​

$(window).load(function () {
    function myFunction(param) {
        console.log("called");
    }
});

如您所见,我无法访问该功能(在加载范围内)。我不能在负载内部使用处理程序,因为我在一个场景中(不要问我为什么,这是一个google maps infowindow策略)处理程序将在我创建一些元素时删除(所以,我应该调用的地方)来自对象的那个函数。)

那么,在加载范围内调用函数是否有“技巧”?

2 个答案:

答案 0 :(得分:2)

你可以将它声明为加载函数范围之外的变量,并设置加载函数范围内的值,并且它是可访问的,但它只会在设置变量后调用函数,即执行加载功能后:

var myFunction;

$(window).load(function () {
    myFunction = function(param) {
        console.log("called");
    }
});

FIDDLE

或者我是怎么做的:

<a href="#" id="myAnchor">Call Function</a>​

-

$(function() {
    $("#anchor").on('click', function(e) {
        e.preventDefault();  
        console.log("called");
    });
});

谷歌地图有自己的处理方式:

google.maps.event.addListener(marker, 'click', function(event) { ...

答案 1 :(得分:0)

为什么不这样做?

function myFunction(param) {
    console.log("called");
}

$(window).load(function () {
    //Any code you actually need in the load
});