2012-06-02 7 views
56

У меня есть функция global jQuery ниже, но при загрузке страницы я хочу выполнить ее после задержки 1000. Что-то не так с моим синтаксисом? Я знаю, что задержка всегда идет перед функцией. Он не отвечает.Функция запуска после задержки

Глобальная функция:

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

Выполнение функции:

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

Это то, что вы ищете человек :) надеюсь, что это поможет, http: // stackoverflow.com/questions/5322344/to-delay-javascript-function-call-use-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

Я искал и нашел решение в следующем URL является лучше.

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); 
});