Jquery使用time()延迟slideDown;

发布于 2025-01-02 15:48:02 字数 653 浏览 0 评论 0原文

抱歉我找不到这个。

$('div#loader').slideDown("fast").delay(1.5);

没有像预期的那样,我希望它slideDown,然后保持该模式 1.5 秒,然后加载函数发生得非常快,然后它快速向上滑动。我认为 delay(); 是正确的方法。

对于那些希望看到的人来说,完整的功能:

$(document).ready(function () {
    function last_msg_funtion() {
        var ID = $(".pic_box:last").attr("id");
        $('div#loader').slideDown("fast").delay(1.5);
        $.post("/?action=get&id=" + ID,
        function (data) {
            if (data!="") {
                $(".pic_box:last").after(data);
            }
            $('div#loader').slideUp("fast");
        });
    };
});

Sorry I could not find this.

$('div#loader').slideDown("fast").delay(1.5);

Does not word as expected, I want it to slideDown, then stay in that mode for 1.5 seconds and then the load function which happens very fast and then it slides up using fast. I thought delay(); was the correct approach.

Full function for those who wish to see:

$(document).ready(function () {
    function last_msg_funtion() {
        var ID = $(".pic_box:last").attr("id");
        $('div#loader').slideDown("fast").delay(1.5);
        $.post("/?action=get&id=" + ID,
        function (data) {
            if (data!="") {
                $(".pic_box:last").after(data);
            }
            $('div#loader').slideUp("fast");
        });
    };
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回首观望 2025-01-09 15:48:02

延迟仅延迟其后面的函数,因此它不会延迟任何内容。 如果您感兴趣,您最好在这里使用 setTimeout ,IMO

$('div#loader').slideDown("fast", function(){
   setTimeout(function(){
    $.post("/?action=get&id=" + ID,
    function (data) {
        if (data!="") {
            $(".pic_box:last").after(data);
        }
        $('div#loader').slideUp("fast");
    });
}, 1500);
});

这里是延迟代码,

// Based off of the plugin by Clint Helfers, with permission.
// http://blindsignals.com/index.php/2009/07/jquery-delay/
delay: function( time, type ) {
    time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
    type = type || "fx";

    return this.queue( type, function( next, hooks ) {
        var timeout = setTimeout( next, time );
        hooks.stop = function() {
            clearTimeout( timeout );
        };
    });
},

您可以看到它如何只接受函数链中的下一个内容并延迟它。

Delay only delays functions that come after it in the chian, so it is delaying nothing there. You are better off using setTimeout here IMO

$('div#loader').slideDown("fast", function(){
   setTimeout(function(){
    $.post("/?action=get&id=" + ID,
    function (data) {
        if (data!="") {
            $(".pic_box:last").after(data);
        }
        $('div#loader').slideUp("fast");
    });
}, 1500);
});

Here is the delay code if you are interested,

// Based off of the plugin by Clint Helfers, with permission.
// http://blindsignals.com/index.php/2009/07/jquery-delay/
delay: function( time, type ) {
    time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
    type = type || "fx";

    return this.queue( type, function( next, hooks ) {
        var timeout = setTimeout( next, time );
        hooks.stop = function() {
            clearTimeout( timeout );
        };
    });
},

You can see how it only takes whatever is next in the function chain and delays that.

流星番茄 2025-01-09 15:48:02

您可以定义一个 wait 辅助函数,并在等待 1.5 秒后运行您的代码:

$.wait = function(time) {
  return $.Deferred(function(dfd) {
    setTimeout(dfd.resolve, time);
  });
}


$(document).ready(function () {
    function last_msg_funtion() {
        var ID = $(".pic_box:last").attr("id");
        $('div#loader').slideDown("fast");
        $.wait(1500).then(function() {
            $.post("/?action=get&id=" + ID, function (data) {
                if (data != "") {
                    $(".pic_box:last").after(data);
                }
                $('div#loader').slideUp("fast");
            });
        });
    };
});

在我看来,wait 函数使您的代码可读性更好

You could define a wait helper function and run your code after waiting for 1.5 secs:

$.wait = function(time) {
  return $.Deferred(function(dfd) {
    setTimeout(dfd.resolve, time);
  });
}


$(document).ready(function () {
    function last_msg_funtion() {
        var ID = $(".pic_box:last").attr("id");
        $('div#loader').slideDown("fast");
        $.wait(1500).then(function() {
            $.post("/?action=get&id=" + ID, function (data) {
                if (data != "") {
                    $(".pic_box:last").after(data);
                }
                $('div#loader').slideUp("fast");
            });
        });
    };
});

The wait function makes your code reads better IMO

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文