Javascript 在“每个函数”中的最后一个元素动画之后执行某些操作
我想在每个函数中的最后一个元素动画之后做一些事情。 我尝试了下面的代码,但似乎不起作用Javascript 在“每个函数”中的最后一个元素动画之后执行某些操作,javascript,jquery,animation,each,Javascript,Jquery,Animation,Each,我想在每个函数中的最后一个元素动画之后做一些事情。 我尝试了下面的代码,但似乎不起作用 $(".menu").click(function() { var elems = $('.top-menu ul li'), i = 0; elems.each(function(i) { i += 1; $(this).delay(70*i).fadeIn(300); if(i == elems.length) {
$(".menu").click(function() {
var elems = $('.top-menu ul li'),
i = 0;
elems.each(function(i) {
i += 1;
$(this).delay(70*i).fadeIn(300);
if(i == elems.length) {
$('.bodyWrapper').addClass('noBodyScroll');
}
});
});
您已经非常接近了,只需将其移动到
fadeIn
回调,而不必自己管理i
;jQuery已将其作为每个回调的第一个参数提供:
$(".menu").click(function() {
var elems = $('.top-menu ul li');
elems.each(function(i) {
$(this).delay(70*i).fadeIn(300, function() { // ***
if(i == elems.length - 1) { // *** note the - 1
$('.bodyWrapper').addClass('noBodyScroll');
}
});
});
});
这不存在循环中的回调问题,因为对每个
回调的每次调用都会得到自己的i
参数,该参数不会得到更新
请注意,在第一个70*I
之前,我独自离开了I
。如果第一个元素延迟70毫秒很重要,您可能希望继续并增加i
(这只会发生一次):
您已经非常接近了,只需将其移动到fadeIn
回调,而不必自己管理i
;jQuery已将其作为每个回调的第一个参数提供:
$(".menu").click(function() {
var elems = $('.top-menu ul li');
elems.each(function(i) {
$(this).delay(70*i).fadeIn(300, function() { // ***
if(i == elems.length - 1) { // *** note the - 1
$('.bodyWrapper').addClass('noBodyScroll');
}
});
});
});
这不存在循环中的回调问题,因为对每个
回调的每次调用都会得到自己的i
参数,该参数不会得到更新
请注意,在第一个70*I
之前,我独自离开了I
。如果第一个元素延迟70毫秒很重要,您可能希望继续并增加i
(这只会发生一次):
您是否可以共享可执行的演示/代码片段或?[HTML
丢失..]您可以共享可执行的演示/代码片段还是?[HTML
缺失..]