Запустити функцію після затримки


77

У мене зберігається нижченаведена глобальна функція jQuery, але при завантаженні сторінки я хочу виконати її після затримки 1000. Щось не так з моїм синтаксисом? Я знаю, що затримка завжди йде перед функцією. Він не відповідає.

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

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

Виконання функції:

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

Це те , що ви шукаєте людини :) сподіваюся , що це допомагає, stackoverflow.com/questions/5322344 / ...
Tats_innit

Перша явна проблема полягає в тому, що ви намагаєтесь викликати showpanel як метод іншого об’єкта (у цьому випадку об’єкт jQuery повертається за допомогою виклику delay ()). Але ви оголосили showpanel як просту, безпосередньо доступну функцію, а не як метод будь-якого об'єкта. JavaScript не працює таким чином.
BobS

Відповіді:


146
$(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)

});

Докладніше див. Тут


47

Я шукав і знайшов рішення в наступній 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();
  
  });

а потім виконати наступну функцію в черзі для відповідних елементів (-ів), яка наразі це знову.

- РЕДАКТУВАТИ [МОЖЛИВО ПОЯСНЕННЯ ДЛЯ КОМАНДИ ДЕКВАРАЦІЇ ]

Погляньте на команду

Ми наказуємо двигуну jQuery додати функцію у внутрішню чергу, а потім через певний проміжок часу наказуємо їй викликати цю функцію, АЛЕ дотепер ми ніколи не казали їй зняти її з движка. Правильно ?! А потім, після того, як кожна річ зроблена, ми виводимо її з движка jQuery вручну. Сподіваюся, пояснення могло б допомогти.


Чи можете ви узагальнити рішення та пояснити, як воно працює? Просто посилання на рішення не є ідеальним, оскільки це посилання може перестати працювати в якийсь момент у майбутньому ...
devlin carnate

@devlincarnate Я оновив пост. Прочитайте його і переконайтеся, що його легко зрозуміти чи ні. Сподіваюся, це буде корисно.
ebrahim.mr

4
Це не пояснює, що робить черга або чому необхідна вилучення. З якою метою знімає чергу з сервера; Я б не очікував, що функція буде виконуватися більше одного разу, так навіщо її зняти з черги?
Трійко

$('#main > ul').delay(100).queue(function () { $(this).attr('data-uk-grid', 'masonry: true; parallax: 150;').dequeue() }); $('#main > ul').delay(1).queue(function () { $(this).removeClass('uk-grid uk-flex-top uk-flex-wrap-top').dequeue() });
Олів'є

1
@Niklas Я оновив допис. будь ласка, погляньте на це.
ebrahim.mr

31

Ви можете додати функцію очікування в jQuery (Показати сповіщення через 3 секунди):

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

1

Ця відповідь просто корисна, щоб зрозуміти, як можна зробити затримку за допомогою delayфункції JQuery .

Уявіть, що у вас є попередження, і ви хочете встановити текст попередження, потім показати попередження і через кілька секунд сховати його.

Ось просте рішення:

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

Це абсолютно просто:

  1. .html() змінить текст .alert-element
  2. .fadeIn(500) зникає через 500 мілісекунд
  3. delay(5000)Функція JQuery зробить 5000 мілісекунд затримки перед викликом наступної функції
  4. .fadeOut(1000) в кінці заяви буде зникати .alert-element
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.