代码之家  ›  专栏  ›  技术社区  ›  nickf

在一段时间后执行的排队操作(不是效果)。

  •  4
  • nickf  · 技术社区  · 16 年前

    我想知道的是,是否有一种好的方法可以将jquery函数排队,以便在设置的时间之后执行。这不会暂停其他函数的执行,只会暂停链中后续函数的执行。也许我设想的一个例子可以说明:

    $('#alert')
        .show()
        .wait(5000)    // <-- this bit
        .hide()
    ;
    

    我知道使用超时是可能的,但这似乎是一种混乱的方法,特别是与上面的例子相比(如果它是真实的)。

    所以,像这样的东西已经内置到jquery中了吗?如果不是,那么,模拟它的最佳方法是什么?

    2 回复  |  直到 16 年前
        1
  •  8
  •   Prestaul    16 年前

    var el = $('#alert');
    el.show()
    setTimeout(function() { el.hide() }, 5000);
    

    jQuery.fn.extend({
        delayedHide: function(time) {
            var self = this;
            setTimeout(function() { self.hide(); }, time);
        }
    });
    
    $('#alert')
        .show()
        .delayedHide(5000)
    ;
    

    jQuery.fn.extend({
        delayThis: function(fn, time, args) {
            var self = this;
            setTimeout(function() { jQuery.fn[fn].apply(self, args); }, time);
        }
    });
    
    $('#alert')
        .show()
        .delayThis('hide', 5000)
    ;
    

    $('#alert')
        .show()
        .delayThis('css', 5000, [ 'display', 'none' ])
    ;
    
        2
  •  1
  •   Jack91255    6 年前

    jQuery FxQueues plug-in

    $('#element').fadeOut({
        speed: 'fast',
        preDelay: 5000
    });