开发者

How to ScrollTo next & next & next....... element

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

jQuery with ScrollTo Plugin (http://demos.flesler.com/jquery/scrollTo/)

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

Demo : http://jsfiddle.net/UaGjs/8/

It doesnt work :( It work only 1st time


Working on Tomalak's answer you need to update the reference obj points to to the next element

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} );
});

I've updated it with Prev but it can be improved to remove the duplication

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

I've noticed there is an occompanying plugin called Serial Scroll

Final edit

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


Because you always re-obtain a handle to the DOM elements with $('.post'), rather than re-using the object and calling .next() on it iteratively.

Try the following. It's untested and rough/ready, but should demonstrate how you can get around the scoping issue.

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


Because you always re-obtain a handle to the DOM elements with $('.post'), rather than re-using the object and calling .next() on it iteratively.

Try the following. It's untested and rough/ready, but should demonstrate how you can get around the scoping issue.


I didn't have much luck working with next(). What I did was load all my elements of the same class into an array:

 myArray = $('.post');

Then initialize an index:

 index = 1;

Then iterate through the array:

$('.next').click(function() {
 $(".wrap").scrollTo( myArray[index], 800, {margin:true} );
 index++;
});

Hope this is helpful!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜