1

私のコード

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

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

ご覧のとおり、その関数にアクセスできません (ロード スコープ内にあります)。ロード内でハンドラーを使用することもできません。これは、(理由は聞かないでください。これは Google マップの情報ウィンドウ ポリシーです) 要素を作成するときにハンドラーが削除されるシナリオにいるためです (つまり、どこで呼び出す必要があるか)。その関数はオブジェクトから)。

では、ロードスコープ内で関数を呼び出す「トリック」はありますか?

4

2 に答える 2

2

ロード関数のスコープ外の変数として宣言し、ロード関数のスコープ内で値を設定すると、アクセス可能になりますが、変数が設定された後、つまりロード後にのみ関数が呼び出されます関数が実行されました:

var myFunction;

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

フィドル

または私がそれを行う方法:

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

--

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

Google マップには、これを処理する独自の方法があります。

google.maps.event.addListener(marker, 'click', function(event) { ...
于 2012-10-29T15:56:46.340 に答える
0

なぜこれをしないのですか?

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

$(window).load(function () {
    //Any code you actually need in the load
});
于 2012-10-29T15:56:17.917 に答える