0

私はこのマークアップを持っています:

<span class="click">click</span>
<div><span>first child</span>, <span>second child</span>, <span>third child</span></div>

「.click」(「ターゲット」と呼びましょう)をクリックした後
、次のようにします。1.次のdivの最初の子に「done」htmlを追加します。

$('.click').click(function (e) {
    $(this).next('div').children('span').first().html(function () {
        return $(this).html() + ' done';
    });
});
});

2.前の関数が完了した後でのみ、ターゲットの次のdivの3番目の子に「done」htmlを追加します。
3.前の機能が完了した後でのみalert ("third child done. coming to second...");
4.前の関数が完了した後でのみ、ターゲットの次のdivの2番目の子に「処理する最後の要素になる」htmlを追加します。
5.最後に、前の機能が完了した後でのみ、alert ('the job is done');
6.これらの関数は、複数のsetTimeoutが含まれる場合でも、完了するまでに長い時間がかかる可能性があるため、ロジック全体が完了するまで、「。click」に関連するすべてのイベントを無効にする必要があります(この特定の場合は、後で有効になることを意味します)alert ('the job is done'))。
たぶん$.Deferredsを使用しますか?または、ある種のコールバックを作成しますか?..

4

1 に答える 1

1

あなたが探しているのは遅延オブジェクトのようです。jQuery 1.5 で利用可能になりました。

遅延オブジェクトを使用すると、関数呼び出しを次のように調整できます

functionOne().done( function2, function3, function4 )

これを見てください:http://api.jquery.com/deferred.done/

于 2012-12-28T04:02:56.600 に答える