2014-02-19 46 views
-1

我一直试图使用jQuery的scrollLeft创建一个小滑动部件,该部件由此特定页面元素两侧的两个<div>元素操作。尽管有些人会称之为非常糟糕的做法,并且可能带有一些令人难以置信的原始代码,但最初的一切似乎都按预期工作。 试图使元素更容易使用我决定包含一个if语句,以便使图像循环回到第一个,如果按钮被点击的次数多于存在的图像的次数。ScrollLeft不与“if”语句结合使用

本质的代码工作如下(其中每个图像是100个像素宽)

$("#next").click(function() { 
    position = position + 100; 
    $("#wrap").animate({ 
     scrollLeft: (position) 
    }); 
}); 

但停止时变为

$("#next").click(function() { 
    if (positon < 300){ 
     position = position + 100; 
     $("#wrap").animate({ 
      scrollLeft: (position) 
     }); 
    } else { 
     loopBack(); 
     } 
}); 

其中loopBack是设定position为0的函数的工作并按照初始(工作)功能进行。 JSHint报告没有代码语法本身的问题,我已将值检查更改为position != 300,以查看它做了什么差异(没有,因为它实际上)。

的JSFidde可以在这里找到:http://jsfiddle.net/ActualRealJamz/8WcUb/7/ 落后的功能一直保持按原来如此,你可以看到它是如何开始工作,wrap具有已启用x轴滚动,这样它实际上可以使用落后功能。

我对这里的想法非常坚持,任何帮助都会在这里得到最多的赞赏。

+0

什么'position'包含在函数的开始?它是一个(吞噬!)全局变量? – lucke84

+0

“Uncaught ReferenceError:** positon **未定义” – gvee

+0

另外我认为你需要检查'200',而不是'300',因为只有3个块。否则会有额外的点击需要回滚到0 – Pointy

回答

0

您的代码中存在拼写错误。

这很容易被发现,如果你检查控制台日志:

Uncaught ReferenceError: positon is not defined

修正码(断定上)

$("#next").click(function() { 
    if (position < 300){ 
     position = position + 100; 
     $("#wrap").animate({ 
      scrollLeft: (position) 
     }); 
    } else { 
     loopBack(); 
     } 
}); 
+0

非常感谢!我完全错过了。让我感到有点尴尬,至少可以说! – user2957638