2012-06-02 148 views
56

後,我有以下存儲全球jQuery函數,但在頁面加載,我想1000的延遲後執行它。我的語法有什麼問題嗎?我知道延遲總是在功能之前。它沒有迴應。運行功能延遲

全球功能:

function showpanel() {  
     $(".navigation").hide(); 
     $(".page").children(".panel").fadeIn(1000); 
    ;} 

執行功能:

parallax.about.onload=function(){ 
    $('#about').delay(3000).showpanel(); 
}; 
+0

這是你在找什麼人:)希望這有助於HTTP://計算器。com/questions/5322344/to-delay-javascript-function-call-using-jquery –

+0

第一個明確的問題是你試圖調用showpanel作爲另一個對象的方法(在這種情況下,延遲返回的jQuery對象)呼叫)。但是你已經將showpanel聲明爲一個簡單的,可直接訪問的函數,而不是任何對象的方法。 JavaScript不會以這種方式工作。 – BobS

回答

113
$(document).ready(function() { 

    // place this within dom ready function 
    function showpanel() {  
    $(".navigation").hide(); 
    $(".page").children(".panel").fadeIn(1000); 
} 

// use setTimeout() to execute 
setTimeout(showpanel, 1000) 

}); 

更多看到here

29

我搜查,發現在以下網址的解決辦法是更好

http://www.tutorialrepublic.com/faq/call-a-function-after-some-time-in-jquery.php

這值得一試。

它增加了你給函數的函數的隊列中的匹配元素這是目前上執行。

$(this).delay(1000).queue(function() { 

    // your Code | Function here 

    $(this).dequeue(); 

    }); 

,然後執行下一個功能上的隊列這是目前再次匹配元件(一個或多個)。

+0

您可以總結解決方案並解釋它的工作原理嗎?只是鏈接到一個解決方案並不理想,因爲該鏈接可能會在將來的某個時間點停止工作...... –

+0

@devlincarnate我更新了該文章。閱讀並理解它很容易理解或不理解。希望它有用。 –

+0

這可以很好地工作 –

1

此答案僅用於瞭解如何使用JQuery delay函數延遲函數。

想象一下,你有一個警覺,要設置警報文本,然後顯示警報和幾秒鐘後隱藏。

下面是簡單的解決方案:

$(".alert-element").html("I'm the alert text").fadeIn(500).delay(5000).fadeOut(1000); 

這是完全簡單:

  1. .html()將改變.alert-element
  2. .fadeIn(500)文本後500毫秒會淡入
  3. JQuery的delay(5000)功能將延遲5000毫秒在聲明的末尾調用一個函數
  4. .fadeOut(1000)將淡出.alert-element
11

可以在jQuery的(在3秒後自動顯示警告)添加超時功能之前, :

$(document).ready(function($) { 
    setTimeout(function() { 
    alert("Hello"); 
    }, 3000); 
});