簡體   English   中英

將函數傳遞給jQuery .ready()函數

[英]Pass function to jQuery .ready() function

我目前正在使用Simon Willson的addLoadEvent函數來添加要在load事件之后運行的函數。 我遇到了一個問題,其中傳遞給addLoadEvent函數的函數引用了DOM尚未加載的div,因此我的操作(顯示div)沒有執行任何操作。 當我改用jQuery $(document).ready函數時,div已由DOM加載,我可以對其執行操作(使它顯示出來)。

因此,有幾個問題。 為什么在使用上述函數加載DOM完成之前執行我的函數? 有辦法延遲嗎? 我能想到的另一種選擇是將一個函數傳遞給等效的jquery:

function jqueryAddReadyEvent(myFunc)
{ 
    $(document).ready(function()
    {
        //execute already existing functions
        //add a new function to the ready event
        myFunc();
    }
}

當我嘗試上述代碼時,出現了JavaScript錯誤“ myFunc不是函數”。 有沒有一種方法可以將函數傳遞給jQuery ready函數並執行? 等效於以下內容:

$(document).ready(function()
{
    funcA();
}
$(document).ready(function()
{
    funcB();
}
...//more of the same

替換為以下內容:

jQueryAddReadyEvent(funcA);
jQueryAddReadyEvent(funcB);

您可以這樣做:

$(document).ready(myFunc);

將函數附加到DOM ready事件。 這是小提琴: http : //jsfiddle.net/padtE/

如果您需要添加許多功能,那么我建議您執行以下操作:

Create an array that will old all the functions you want to call.
Add functions to that array as you please.
In the .ready(function() { ... }) call every function in that array.

你定了

function jqueryAddReadyEvent(myFunc) {
    $(myFunc);
}

jqueryAddReadyEvent(function() {
    alert('hello world');
});

演示: http//jsfiddle.net/AlienWebguy/UzMLE/

在我看來,這是正確的。 您很可能用某種不是函數的方式調用它。

順便說一句,您可以將其縮短為:

var jqueryAddReadyEvent = $(document).ready

或直接使用$(document).ready()來達到相同的效果,因為它專門做您想做的事情,在加載后運行函數,實際上更短。

$(document).ready(funcA);
$(document).ready(funcB);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM