$("#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);
但没有变化。如何捕获“每个”迭代完成?我希望在每个方法运行时阻止点击事件,并在每个方法完成后,然后激活点击事件
答案 0 :(得分:2)
使用.promise()
对象:
$("." + group).each(function (index) {
$(this).delay(100 * index).fadeOut(100);
});
$("." + group).promise().done(function() {
$("#div_game_container").on("click", ".square", squareClick);
});