2011-11-24 90 views
2

我的页面上有6个元素。每个元素旁边都会显示优先级编号。我试图在元素移动后更新此数字。但是,我遇到了jQuery fadeIn()fadeOut()方法的一些时间问题。我的目标是淡出一些文本,更新文本,然后淡入文本。第一种方法是做我需要的一切。尽管有时在fadeOut()完成之前文本会发生变化,并且看起来很糟糕。这就是为什么我试图为fadeOut()方法使用一个函数,并且只在fadeOut()完成时才改变文本并执行fadeIn()。第二种方法的问题是每个元素都显示“7”的优先级。我不知道为什么!有谁知道为什么第二种方法不能正常工作?jQuery fadeIn()fadeOut()计时问题

方法#1

var priorityNumber = 1; 
$("#rotatorList ul li .priority-number").each(function(){ 
    $(this).fadeOut(200).text(priorityNumber).fadeIn(200); 
    priorityNumber = priorityNumber+1; 
}); 

方法2

var priorityNumber = 1; 
$("#rotatorList ul li .priority-number").each(function(){ 
    $(this).fadeOut(200, function(){ 
     $(this).text(priorityNumber).fadeIn(200); 
    }); 
    priorityNumber = priorityNumber+1; 
}); 
+0

这是因为通过时间淡出完成后,优先数由6加我想到用增量别的地方,将有助于:另一件事你可以尝试使用提供的每个指标。 – theshadowmonkey

回答

1

你有没有尝试过这样做?:

var priorityNumber =1; 
    $("#rotatorList ul li .priority-number").each(function(){ 
     $(this).fadeOut(200, function(){ 
      $(this).text(priorityNumber).fadeIn(200); 
      priorityNumber = priorityNumber+1; 
     }); 

    }); 

这样http://jsfiddle.net/JUSa7/1/小提琴(告诉我,如果我missunderstood你)

jQuery(".test").each(function(i){ 
    $(this).fadeOut(200, function(){ 
     $(this).text(i+1).fadeIn(200); 
    }); 
}); 
+0

谢谢!你的第一个例子完美运作。不能相信我错过了那个。 O_O – RyanPitts