2014-02-09 91 views
1

我有一個簡單的jQuery函數,點擊.load-more的每個實例將在下一個.inside實例中褪色並滾動到它。第一個.load-more點擊工作正常,成功滾動到.inside,但隨後點擊下一個.load-more淡入.inside的下一個實例,但由於某種原因沒有滾動到它,不太清楚爲什麼?

的jsfiddle演示:http://jsfiddle.net/neal_fletcher/K9nMS/5/

的jQuery:jQuery:動畫滾動到下一個只能工作一次

$(document).ready(function() { 

    var divs = $(".wrap > .div"); 
    for (var i = 0; i < divs.length; i += 3) { 
     divs.slice(i, i + 3).wrapAll("<div class='inside'><div class='new'></div></div>"); 
    } 

}); 


$(document).ready(function() { 

    Resize(); 
}); 

$(window).resize(function() { 
    Resize(); 
}); 

function Resize() { 
    var windowHeight = $(window).height() + 'px'; 
    $('.inside').css('height', windowHeight); 
} 


$(document).ready(function() { 

    $(".new .div:last-child").after("<span class='load-more'>More?</span>"); 
    $('.inside').hide().filter(":first-child").show(); 

    $('.load-more').click(function() { 
     var nextinside = $(this).parent().parent('.inside').nextAll(".inside:first"), 
      nextloadmore = $(this).nextAll(".load-more:first"); 
     $(this).hide(); 
     nextinside.fadeIn(); 
     nextloadmore.fadeIn(); 
     $('.wrap').animate({ 
      scrollTop: nextinside.offset().top - 0 
     }, 700); 
    }); 
}); 

任何建議或解決方案將不勝感激!

+0

爲什麼你有三個文件。 ready()函數?你應該把所有的代碼放在一個單獨的函數中 – Bill

回答

1

您需要更改位置scrollTop的每個連續設定爲設定指標的倍數:

scrollTop: nextinside.index() * nextinside.offset().top 

我有工作了,你在這裏:http://jsfiddle.net/K9nMS/7/