2014-10-01 87 views
0

我有一個簡單的博客,每個博客文章有一系列圖像範圍從1到10.如果您單擊任何圖像的帖子,它應該向下滾動到下一篇文章。我想的那麼簡單,因爲這將工作過的東西:jQuery/JS - 滾動到點擊下一個元素(滾動div問題)

$('.each-journal-entry .slider-container .journal-slider .each-slide img').on('click', function() { 
    var $this = $(this); 
    $('.journal-container').animate({ 
     scrollTop: $this.closest('.each-journal-entry').next().offset().top 
    }, 500); 
}); 

但是當我點擊另一個圖像,除了第一個,它只是滾動到一個奇怪的位置。

我設法與一些幫助實現這一點,你可以在這裏看到的輸出:http://jsfiddle.net/w7rtcmp0/3/偉大的工程,但對我來說不同的是,我的內容是在一個可滾動的div(因此.journal-container而不是html, body

爲什麼我有這個問題的任何想法?我創建了一個的jsfiddle與滾動的div,如果你單擊圖像進一步下跌...它複製這個問題......所以希望這有助於。

http://jsfiddle.net/w7rtcmp0/5/

謝謝。

+0

你將它插入'$(窗口).load()'? – loveNoHate 2014-10-01 14:53:29

+0

@DOCASAREL我沒有...應該嗎?我以爲'.on'函數可以解決這個問題? – 2014-10-01 14:54:47

+0

@braw,你很好。這不是問題的負擔。 – 2014-10-01 15:15:07

回答

2

jQuery的基於當前的滾動位置調整offset().top()

使用JavaScript的offsetTop屬性應該解決這個問題:

scrollTop: $this.closest('.each-journal-entry').next()[0].offsetTop 

小提琴:http://jsfiddle.net/m7cm5oL6/

0

所以我認爲你試圖使用錯誤的高度。

這裏我設置了一個高度變量並將其設置爲當前日記/博客對象的高度。這使我可以將我的高度一直滾動到下一個可用的博客對象。

http://jsfiddle.net/w7rtcmp0/24/

$('.each-journal-entry .slider-container .journal-slider .each-slide img').on('click', function()  { 
    $this = $(this); 
    var height = $this.closest('.each-journal-entry').height(); 

    $('.scrollable').animate({ 
    scrollTop: height 
    }, 2000); 
}); 
+1

如果只有兩個日記帳分錄,這將適用,但不適用於後續分錄。 – 2014-10-01 15:13:15

+0

啊,你是對的,對不起。在這裏,我會解決它。 – 2014-10-01 15:16:28