0

我有这个标记:

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

点击“.click”(我们称其为“target”)后,我想要:
1. 将“done” html 添加到下一个 div 的第一个子项中,如下所示:

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

2.只有在上一个函数完成后,将“done”html添加到目标的next div的第三个孩子;
3. 只有在前一个功能完成后,alert ("third child done. coming to second...");
4.只有在上一个函数完成后,将“将是最后一个处理的元素”html添加到目标的next div的第二个孩子;
5. 最后,只有在前一个功能完成后,alert ('the job is done');
6.由于这些功能可能需要很长时间才能完成,甚至可能涉及多个setTimeouts,我必须禁用所有与“.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 回答