【问题标题】:Run Function After Delay延迟后运行功能
【发布时间】:2021-02-02 02:44:54
【问题描述】:

我存储了以下全局 jQuery 函数,但在页面加载时,我想在 1000 延迟后执行它。我的语法有问题吗?我知道延迟总是在功能之前。它没有响应。

全局函数:

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

执行函数:

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

【问题讨论】:

  • 这就是你要找的人:) 希望这会有所帮助,stackoverflow.com/questions/5322344/…
  • 第一个明显的问题是您试图将 showpanel 作为另一个对象(在本例中为 delay() 调用返回的 jQuery 对象)的方法来调用。但是您已将 showpanel 声明为一个简单的、可直接访问的函数,而不是任何对象的方法。 JavaScript 不能以这种方式工作。

标签: jquery


【解决方案1】:
$(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

【讨论】:

    【解决方案2】:

    我搜索了一下,发现以下网址中的解决方案更好

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

    值得一试。

    它将您给定的函数添加到要在当前为 this 的匹配元素上执行的函数队列中。

     $(this).delay(1000).queue(function() {
    
         // your Code | Function here
         
         $(this).dequeue();
      
      });
    

    然后再次为当前为this的匹配元素执行队列中的下一个函数。

    -- 编辑 [DEQUEUE 命令的可能解释]

    看看命令

    我们命令 jQuery 引擎在内部队列中添加一个函数,然后在特定时间后我们命令它调用该函数,但是到目前为止,我们从未告诉它从引擎中取出它.正确的?!然后在每件事完成后,我们手动将其从 jQuery 引擎中取出。我希望解释能有所帮助。

    【讨论】:

    • 你能总结一下解决方案并解释它是如何工作的吗?仅链接到解决方案并不理想,因为该链接可能会在将来的某个时候停止工作......
    • @devlincarnate 我更新了帖子。阅读它,看看它是否易于理解。希望它有用。
    • 这并没有解释队列的作用或为什么需要出队。出队服务器的目的是什么;我不希望函数执行不止一次,那为什么要出队呢?
    • $('#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() });
    • @Niklas 我更新了帖子。请看一下。
    【解决方案3】:

    您可以在jQuery中添加超时功能(3秒后显示警报):

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

    【讨论】:

      【解决方案4】:

      这个答案有助于了解如何使用 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

      【讨论】:

        【解决方案5】:

        你可以简单地使用jQuery的delay()方法来设置延迟时间间隔。

        HTML 代码:

          <div class="box"></div>
        

        JQuery 代码:

          $(document).ready(function(){ 
            $(".show-box").click(function(){
              $(this).text('loading...').delay(1000).queue(function() {
                $(this).hide();
                showBox(); 
                $(this).dequeue();
              });        
            });
          });
        

        您可以在此处查看示例:How to Call a Function After Some Time in jQuery

        【讨论】:

          猜你喜欢
          • 2011-05-02
          • 1970-01-01
          • 2017-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-14
          相关资源
          最近更新 更多