<div class="wrap">
<div class="layer">
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
<div class="post"></div>
</div>
</div>
<span class="next" style="cursor:pointer;"> (next div) </span>
使用ScrollTo插件的jQuery(http://demos.flesler.com/jquery/scrollTo/)
$('.next').click(function() {
$(".wrap").scrollTo( $('.post').next(), 800, {margin:true} );
});
演示:http://jsfiddle.net/UaGjs/8/
它不起作用:( 它只工作第一次
答案 0 :(得分:8)
根据Tomalak的回答,您需要将参考obj指向更新到下一个元素
var next;
$('.next').click(function() {
if ( next === undefined ) {
next = $('.post').next();
} else {
next = next.next();
}
$(".wrap").scrollTo(next , 800, {margin:true} );
});
我已使用Prev更新了它,但可以改进它以删除重复
我注意到有一个名为Serial Scroll
的occompanying插件最终编辑
答案 1 :(得分:1)
因为您总是使用$('.post')
重新获取DOM元素的句柄,而不是重复使用该对象并迭代地调用.next()
。
尝试以下方法。它没有经过测试和粗略/准备好,但应该展示如何解决范围问题。
$(function() {
var $obj = $('post');
$('.next').click(function() {
$('.wrap').scrollTo($obj.next(), 800, { margin:true });
});
});
答案 2 :(得分:1)
因为您总是使用$('.post')
重新获取DOM元素的句柄,而不是重复使用该对象并迭代地调用.next()
。
尝试以下方法。它没有经过测试和粗略/准备好,但应该展示如何解决范围问题。
答案 3 :(得分:0)
我没有太多运气与next()。我所做的是将同一个类的所有元素加载到一个数组中:
myArray = $('.post');
然后初始化索引:
index = 1;
然后遍历数组:
$('.next').click(function() {
$(".wrap").scrollTo( myArray[index], 800, {margin:true} );
index++;
});
希望这有用!