2014-09-11 16 views
1

我使用這個腳本滾動到所示崩潰元素:引導崩潰scrollTop的滾動到錯誤的元素

$('.collapse').on('shown.bs.collapse', function() { 
    $('html, body').stop().animate({ 
    scrollTop: $(this).offset().top 
    }, 500, 'swing'); 
}); 

它完美的,除了我的導航一切在非常小的屏幕尺寸。打開菜單時,我想讓它滾動到導航欄的頂部。這適用於我的頂級導航,但對於我的第二級導航,它會滾動到該部分的頂部而不是導航。

Bootply

(使用移動預覽 - >點擊按鈕,打開可摺疊導航 - >點擊「鏈接1」 - >滾動至底部,並點擊按鈕,打開第二個倒塌NAV)

正如你將看到它會滾動到「鏈接1」標題,而不是剛剛打開的導航欄。

回答

0

這個問題沒有得到解答,讓我有些煩惱,所以我在近3年後再次看了一遍。我發現父母和第二個導航都在第二個「顯示」事件上發射。

然後我發現這個similar question,和accepted answer保持關鍵。

這與使用event對象的stopPropagation方法一樣簡單,以防止將父事件收集元素也通知給事件。

$('.collapse').on('shown.bs.collapse', function (event) { 
    event.stopPropagation(); 
    $('html, body').stop().animate({ 
     'scrollTop': $(this).offset().top 
    }, 500, 'swing'); 
}); 

更新bootply