我们有一个涉及一系列滚动面板的功能。面板中间的当前项li
具有类.selected
,并由变量$ selectedLeft表示。该类始终传递到滚动后中间li
处于中间位置。
我想要的是下一个li
在点击时滚动面板,以便该元素位于中间。函数scrollTo是我们函数组成的一部分,工作正常。问题在于选择器。在您选择$selectedLeft.nextAll('li').next().click( function()
的单击函数的那一刻,您正在接管。面板不会向上或向下滚动。这应该仅在点击下一个li
之后的li
时才会出现。
$selectedLeft.nextAll('li').click( function() {
myScroll2.scrollTo(0, 32, 200, true);
});
$selectedLeft.nextAll('li').next().click( function() {
myScroll2.scrollTo(0, 64, 200, true);
});
$selectedLeft.prevtAll('li').click( function() {
myScroll2.scrollTo(0, -32, 200, true);
});
$selectedLeft.prevAll('li').prev().click( function() {
myScroll2.scrollTo(0, -64, 200, true);
});
因此无论设置有多复杂,问题在于选择器,所以我希望有人能看到它。我尝试添加.eq(0)
并且整个功能都无法执行任何操作。
任何想法都错了吗?
非凡
适合所有人的好小提琴http://jsfiddle.net/XHPYF/33/
答案 0 :(得分:0)
选择器不是问题所在。
jQuery对象$selectedLeft
不断变化,但是你写东西的方式只会将你的滚动事件绑定到初始对象。您需要将bind
或delegate
卷轴发送到所有未来的$selectedLeft
。
同样,当$selectedLeft
更改时,您需要解除前一个事件的绑定。
另一个解决方案是检查当前所选li的索引,并检查点击的li是否是一个或两个元素。 (例如对jQuery对象使用`.eq()或数组表示法)这将清除一些“下一步”歧义。