【问题标题】:Why delay() doesn't work? [duplicate]为什么延迟()不起作用? [复制]
【发布时间】:2011-10-11 07:40:26
【问题描述】:

this example:

$('#click').click(function() {
  $('#delay').delay(2000).css('background-color', '#c30000');
});

为什么delay() 调用不会延迟css() 调用?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    查看http://api.jquery.com/delay/http://api.jquery.com/queue/

    $(document).ready(function() {
        $('#click').click(function() {
            $('#delay').delay(2000).queue(function () {
                $(this).css('background-color', '#c30000');
            });
        });
    });
    

    【讨论】:

    【解决方案2】:

    使用 javascript 的 setTimeout():

    setTimeout(function() {
      $('#delay').css('background-color', '#c30000');
    }, 2000);
    

    【讨论】:

      【解决方案3】:

      来自documentation

      .delay() 方法最适合延迟队列中的 jQuery 效果。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的原生 setTimeout 函数,这可能更适合某些用例。

      因此,基本上,在您的场景中,超时是比延迟更好的方法,因为您不在效果之间。

      【讨论】:

        【解决方案4】:

        delay() 仅适用于 jQuery effects

        改用基本的setTimeout 呼叫。

        【讨论】:

        • 只有jQuery UI?我相信它适用于普通的 jQuery 效果,只要你在动画队列中。
        • @alex:我认为所有效果都在 jQuery UI 下。好像没有!
        • 那么 jQuery 有一个 effects section in their documentation。你不需要 jQuery UI 来做效果。
        猜你喜欢
        • 2013-08-29
        • 2018-11-09
        • 2016-06-28
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        相关资源
        最近更新 更多