【发布时间】:2016-10-19 08:12:45
【问题描述】:
一旦promise 是.done(),我就会尝试循环一个函数。我似乎错过了什么。这里有什么建议吗?
我希望它在函数中运行,当最后一个动画完成后,再做一次。
我这里包含了所有的 JS,包括支持功能。
(function($) {
$.fn.shuffle = function() {
// credits: http://bost.ocks.org/mike/shuffle/
var m = this.length, t, i;
while (m) {
i = Math.floor(Math.random() * m--);
t = this[m];
this[m] = this[i];
this[i] = t;
}
return this;
};
}(jQuery));
jQuery.noConflict();
jQuery(document).ready(function($) {
$.fn.queueAddClass = function(className) {
this.queue('fx', function(next) {
$(this).addClass(className);
next();
});
return this;
};
$.fn.animateGrid = function() {
$('.grid').shuffle().each(function(index) {
$(this).delay(100 * index).queueAddClass('zoom-down');
$('div', this).delay(100 * index).animate({opacity:0.85}, 100);
});
$('.grid').promise().done( function(){
$('.grid').animate({opacity:0}, 2000);
$('#mosaic').animateGrid();
});
}
$('#mosaic').animateGrid();
});
【问题讨论】:
-
xy 问题。简而言之,错误的工作工具。 google.com/…
-
究竟是什么不起作用?
-
顺便说一句,
shuffle函数太可怕了。 jQuery 集合中的元素应始终按 DOM 树顺序排列。 -
@Bergi 问题是它没有循环。我希望整个函数 animateGrid 在完成后循环。另外,我不确定您对 DOM 树顺序的含义。关键是要打乱顺序,使它们随机出现。
-
我的意思是 jQuery 集合总是按照元素在 DOM 树中出现的顺序排列。不确定某些 jQuery 方法是否依赖于该不变量。你的
shuffle函数打破了这一点。
标签: javascript jquery function promise