2011-04-12 99 views
1

我想开发一个使用流行的slideTo插件的jQuery滑块。我掀起了一个jfiddle,以便您可以看到我制作的滑块以及代码的示例: http://jsfiddle.net/Mh7Mh/Jquery滑块使用scrollTo越野车

结果稍有错误。当你到达最后一张幻灯片时,它似乎没有回到原来的位置,它应该。看看我的jQuery - 我创建了一个if语句来重置变量,它告诉scrollTo在哪里滚动到To。代码很自我解释。

任何帮助正在解决这将是一个巨大的帮助。谢谢!

回答

1

你在这些函数的逻辑中有多个错误。这是你的JS的改版:

// you were defining these vars in every function, not as global vars 
var jesse = 0; 
var lastSlide = 3; 
// your numSlide var was off by one, renamed it to lastSlide 

// you were adding these events multiple times for each li 
$("#controls a.next").click(function() { 
    (jesse==lastSlide)?(jesse=0):(jesse++); 
    $("#contentSlider").stop().scrollTo('li:eq(' + jesse + ')', 500); 
    return false; 
}); 

$("#controls a.prev").click(function() { 
    (jesse==0)?(jesse=lastSlide):(jesse--); 
    $("#contentSlider").stop().scrollTo('li:eq(' + jesse + ')', 500); 
    return false; 
}); 

?:的使用被称为三元操作。它类似于if/else statement

它的一般用法是:

foo=(booleanExpression)?bar:baz; 
// it is equal to 
if(booleanExpression){ 
    foo=bar; 
}else{ 
    foo=baz; 
} 
+0

我是一个jQuery的新手,所以你可以评论这条线,所以我可以了解发生了什么:(jesse == lastSlide)?(jesse = 0):(jesse ++); – JCHASE11 2011-04-12 00:41:36

+0

非常感谢,顺便说一下! – JCHASE11 2011-04-12 00:41:54

+0

你也可以使用你的if/else语句。我只是喜欢使用[三运营商](http://en.wikipedia.org/wiki/Conditional_(编程)#As_a_ternary_operator)简单的语句。 – Khez 2011-04-12 00:42:55

1

你有一个错误。有四种幻灯片,指数0,1,2,3

所以使用这行:

if (jesse == numSlides-1) { 

和这些行:

 if (jesse == 0) { 
     jesse = numSlides -1; 

即使是这样工作的,它不看起来不错。你会明白我的意思。

+0

雅,做它。非常有意义。谢谢! – JCHASE11 2011-04-12 00:38:58

+0

但你的权利,它仍然是越野车,最有可能是由于@Khez的答案...我为每个li多次添加事件 – JCHASE11 2011-04-12 00:40:29