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()それ自体ではアニメーションキューにキューに入れられないため、最初のスニペットのコールバックに入れる必要がありました。2番目のスニペットでは、すぐに呼び出されます(キューで待機しているタイムアウトがある場合でも、呼び出したときと同じように.delay())。.animate()代わりに、期間がゼロの呼び出しを使用する必要があります。

必要な構文を許可するには、さらに一歩進む必要があります。jQueryタイミングプラグインその魔法がどのように機能するかを見てください。

于 2013-03-13T13:28:09.107 に答える