jquery catch延迟每个都完成了吗?

时间:2014-09-07 09:29:40

标签: jquery delay each

$("#div_game_container").on("click", ".square", squareClick);

function squareClick() {
    var group = $(this).data("group");

    if ($("." + group).hasClass("active")) {

        // off click event
        $("#div_game_container").off("click", ".square", squareClick);

        $("." + group).each(function (index) {
            $(this).delay(100 * index).fadeOut(100);
        });

        // on click event. this line does not wait "each" function 
        $("#div_game_container").on("click", ".square", squareClick);
}

上面的代码不起作用。实际上,它有效,但不是我的预期。我评论出了什么问题。

我也加上这样的延迟:

$("#div_game_container").delay(each_delay_time).on("click", ".square", squareClick);

但没有变化。如何捕获“每个”迭代完成?我希望在每个方法运行时阻止点击事件,并在每个方法完成后,然后激活点击事件

1 个答案:

答案 0 :(得分:2)

使用.promise()对象:

$("." + group).each(function (index) {
    $(this).delay(100 * index).fadeOut(100);
});
$("." + group).promise().done(function() {
    $("#div_game_container").on("click", ".square", squareClick);
});