0

我想扩展对象以便在我的 jquery 命令之间$.fn延迟:

像这个工作(而且很长)的代码:

$('.d').delay(1000).queue(

function ()
{
        $(this).css('background-color', 'green');
        $(this).dequeue();
}).delay(1000).queue(function ()
{
        $(this).css('background-color', 'red');
        $(this).dequeue();
});

一个工作示例在这里:JSBIN

所以我尝试了这个:

我在 jsbin 的代码

$.fn.myWait = function (ms)
{
    return this.queue(

    function ()
    {
        var _self = this;
        setTimeout(function ()
        { 
            $(_self).dequeue();
        }, ms);
    })
};

调用:

$('.d').myWait(1000).css('background-color', 'red').myWait(1000).css('background-color', 'green');

但它不起作用。

我究竟做错了什么 ?

ps 我确实读过这个类似的解决方案,但是如果我删除动画部分并只使用 css,它也不起作用。

4

2 回答 2

0

我怀疑你可以这样做。您需要推迟执行这些属性更改,这意味着您应将所述代码存储在单独的函数中。

于 2013-03-13T13:27:18.933 回答
0

.css()本身不会在动画队列中排队,这就是为什么您需要将它放在第一个片段中的回调中。在第二个片段中,它被立即调用(即使队列中有超时等待 - 就像你调用的一样.delay())。相反,您需要使用.animate()持续时间为零的呼叫。

为了允许您想要的语法,您需要更进一步。看看jQuery 计时插件以及它们的魔力是如何工作的

于 2013-03-13T13:28:09.107 回答