jquery css方法在经常调用时放置错误的值
我正在尝试创建自己的jquery图像旋转木马,以便让自己更加熟悉它 你可以找到这个例子 旋转木马的工作原理是向右滑动,将最后一个jquery css方法在经常调用时放置错误的值,jquery,carousel,Jquery,Carousel,我正在尝试创建自己的jquery图像旋转木马,以便让自己更加熟悉它 你可以找到这个例子 旋转木马的工作原理是向右滑动,将最后一个放在第一个之前,然后向后滑动以隐藏最后一个 问题是,如果有人垃圾邮件发送下一个/上一个按钮,整个旋转木马就会向右移动。例如,如果每秒使用一次上一个/下一个按钮,或者我将其设置为由jquery以快速间隔(500)单击,则不会发生某些事情 守则的有关部分包括: function initUl(){ var li_width = $('.upper li').oute
function initUl(){
var li_width = $('.upper li').outerWidth();
var upper_width=$('.upper').outerWidth();
var lower_width=$('.lower').outerWidth();
var upper_pos = $('.upper').position();
var lower_pos = $('.lower').position();
lastBeforeFirst();
$('.upper').css({'left': upper_pos.left + (-1*li_width)});
$('.lower').css({'left': lower_pos.left + (-1*li_width)});
$('.upper').css({'width': upper_width + li_width});
$('.lower').css({'width': lower_width + li_width});
}
function moveBothRight(){
var speed = 200;
var li_width = $('.upper li').outerWidth();
var upper_pos = $('.upper').position();
var lower_pos = $('.lower').position();
$('.upper').animate({'left' :upper_pos.left + li_width}, speed,fixUpperPosR);
$('.lower').animate({'left' :lower_pos.left + li_width}, speed,fixLowerPosR);
}
function fixUpperPosR(){
var li_width = $('.upper li').outerWidth();
var upper_pos = $('.upper').position();
$('.upper').css({'left': upper_pos.left - li_width});
}
function fixLowerPosR(){
lastBeforeFirst();
var li_width = $('.upper li').outerWidth();
var lower_pos = $('.lower').position();
$('.lower').css({'left': lower_pos.left - li_width});
}
function lastBeforeFirst(){
var first = $('.upper ul li:first');
var last = $('.upper ul li:last');
$(first).before($(last));
first = $('.lower ul li:first');
last = $('.lower ul li:last');
$(first).before($(last));
}
这段代码负责将所有内容向右移动,并在下一次单击时调用它左侧的唯一区别是
$('.lower').css({'left': lower_pos.left + li_width});
第一个在最后一个之前();召唤
这是一个浏览器的东西(它不能很快更新css),因此我应该限制一个人可以按按钮的频率,或者我遗漏了什么?问题是因为动画是异步运行的 每当单击按钮时,您需要查看当前动画并跳到结束 例如:
$('.upper').stop(true, true).animate(...);
这将导致当前动画立即完成,并根据需要更新css。您能提供JSFIDLE吗?你在
.animate()
之前试过调用.stop()
吗?没有,现在效果很好:谢谢