如何ScrollTo next&下一个&下一个.......元素

时间:2011-05-04 12:22:36

标签: jquery scrollto next

    <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/

它不起作用:( 它只工作第一次

4 个答案:

答案 0 :(得分:8)

根据Tomalak的回答,您需要将参考obj指向更新到下一个元素

http://jsfiddle.net/UaGjs/7/

var next;
$('.next').click(function() {
   if ( next === undefined ) {
     next = $('.post').next();
   } else {
      next = next.next();   
   }
   $(".wrap").scrollTo(next , 800, {margin:true} );
});

我已使用Prev更新了它,但可以改进它以删除重复

http://jsfiddle.net/UaGjs/10/

我注意到有一个名为Serial Scroll

的occompanying插件

最终编辑

http://jsfiddle.net/nickywaites/UaGjs/13/

答案 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++;
});

希望这有用!