【问题标题】:Last Image finished fadeIn最后一张图片完成淡入
【发布时间】:2016-03-31 23:20:34
【问题描述】:
var J_lis = $("#Jerseybox ul li img");
var count_jersey = 0
J_lis.hide();
J_lis.each(function(g) {
    $(this).delay((g + 1) * 360).fadeIn();
    count_jersey++;
});

我正在使用 $.each 使其逐个淡入图像,使用此代码,但无论如何我可以知道最后一个图像淡入吗?

我的意图是让这些图像一个一个地淡入,当最后一个图像完成淡入时,我会删除一些东西。

我如何检查最后一个完成的图像淡入?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

如果您想在每个代码之后立即运行代码,您需要这样做:

我们检查你正在循环的数组的长度,如果它与数组的长度相同,你就结束了!

现在也不需要使用 count_jersey。

var J_lis = $("#Jerseybox ul li img");
J_lis.hide();
J_lis.each(function(g) {
    $(this).delay((g + 1) * 360).fadeIn();
    if (g === J_lis.length - 1 ) {
     // here you have your last image!
    }
});

【讨论】:

  • 嗯,它没用,我尝试使用 console.log 来检查注解。
  • 您能将此标记为正确答案吗?上面的代码仍然是错误的,可能会误导人们。错了,你必须做出的改变已经在我的回答中了
  • 你的问题还是错了,因为在fadeIn函数运行完成后它没有运行if statement
  • 我不知道这与他提出的问题有什么关系,而且无论如何它都是错误的,你是在告诉我 if 语句中的代码不会在fadeIn 之后运行吗?
【解决方案2】:

你可以这样做:

var J_lis = $("#Jerseybox ul li img");
var count_jersey = 0
J_lis.hide();
J_lis.each(function(g) {
 //after fadeIn, increase counter
 //and check for g == J_lis.length
 $(this).delay((g + 1) * 360).fadeIn('fast', function(){
  counter_jersey++;
  //if last image is finished
  if(g == J_lis.length){
    //do something
  }
 });
});

我不知道你为什么需要 counter_jersey,但我还是把它包括在内了。

【讨论】:

  • 我试过了,但那些图像仍然淡入,可能是因为我添加了延迟。
  • 我的意思是 count_jersey == J_lis.length 已经触发,但图像仍然没有完成 fadeIn ,我认为是因为延迟。我需要确保最后一个 Image 完成 fadeIn ,然后我可以触发删除一些东西。
  • 不是因为延迟,试试我现在写的代码,应该可以了。
  • 谢谢! ~ 是我需要的,但我添加了 J_lis.length -1 以使其工作。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多