有一个函数没有与jQuery无限旋转木马构建一起运行



所以我试着用html,css和amp;jQuery和除了后退按钮之外的所有东西都在工作,不会循环,我已经花了很长时间做这件事了,我想知道是否有人有任何见解?http://jsfiddle.net/e2SKk/就是你可以看到代码的地方!我真的这么做是因为我认为这会给我一个学习更多的机会,但任何对代码布局或技术的批评都会有所帮助!

特别是这个代码似乎不起作用

else if(loopPrev==true){
sliderActive=true
$('.item-holder').css({
'left':clonePos
});
$('.item-holder').animate({
'left':holderPos+$('.slider').width()+'px'
},function(){
sliderActive=false;
});
};

顺便说一句,这只是一个片段,没有其他内容就没有多大意义!

jQuery编写短脚本很酷。简而言之,您的滑块代码:
var width = $('.slider').width();
$('.item').css({width:width});
var $holder = $('.item-holder').css({left:-width}).prepend($('.item:last'));
$('.prev').click(function(){
$holder.not(':animated').css({left:-2*width}).prepend($('.item:last')).animate({left:-width});
});
$('.next').click(function(){
$holder.not(':animated').css({left:0}).append($('.item:first')).animate({left:-width});
});

​这就是完整的代码。

在上查看此操作http://jsfiddle.net/creativecouple/YPU2d/

这里有一个非常酷的小滑块!你说你是初学者?我想说你对jQuery了解得很好!同样在我忘记之前,回应你的评论:如果你在stackoverflow上发布了什么。。。它将被许多人观看:)。很少来这里却得不到任何帮助(尽管你可能并不总能得到答案)。

幸运的是,我发现了你的问题!就在这里:

else if(loopPrev==true){
sliderActive=true
$('.item-holder').css({
'left':clonePos
});
$('.item-holder').animate({
'left':holderPos+$('.slider').width()+'px'
},function(){
sliderActive=false;
});
};

您正在检查是否循环,将滑块设置为活动,将下一张幻灯片设置为索引中的最后一张幻灯片(然后同时将其推到最后一张),然后按正常方式设置动画。这会导致两个移动:首先移动到索引的后面,然后移动到holderPos+$('.slider').width()+'px'的值……因此会出现奇怪的行为。这应该会有所帮助:

else if(loopPrev==true){
sliderActive=true;
$('.item-holder').animate({
'left':"-1800px"
}, function(){ 
sliderActive=false; 
})
};

值"-1800px"只是我预先计算的缓冲区中的最后一张幻灯片。。。您应该能够毫不费力地用clonePos变量替换它。

*编辑:您还应该将变量clonePos更改为如下所示:

var clonePos = '-'+($('.item').index()-1)*($('.slider').width());

当你在索引中的最后一张幻灯片和第一张幻灯片之间切换时,它将消除一个错误(如果你愿意的话,这是一个"平滑过渡")。

**

第二部分

**

为了实现无限滚动的效果,您需要在"左键按下"的动画调用中嵌入一个回调"推回"函数。现在已经很晚了,所以我还没有测试我即将编写的代码,但我很有信心它会为您工作。

else if(loopPrev==true){
sliderActive=true;
$('.item-holder').animate({
'left':clonePos
}, function(){
$(this).css('left':holderPos+$('.slider').width()+'px');
sliderActive=false; 
})
};

如果你看一看,这与我最初给出的答案没有太大区别。我们所做的只是使用animate的回调函数,并添加了一个将位置滑动到原始索引位置的调用。同样,这是未经测试的,但其想法是.animate()将滑动到克隆,一旦完成,回调将用原始克隆交换克隆,然后停用滑块。

你离这儿不远!以下是animate函数的语义规则(试图帮助您理解回调的工作方式):

animate( params, [duration], [easing], [callback] )
  • params是我们的左调用(在本例中为克隆幻灯片)
  • 此处忽略持续时间
  • 此处忽略宽松政策
  • callback是我们的函数()调用,用于进行我们的小david-copperfield交换

希望这能有所帮助!

最新更新