【发布时间】:2017-12-26 22:37:58
【问题描述】:
我有一个物品清单。当我单击一个项目(项目)时,它会打开(这没关系)并滚动到页面顶部(错误的顶部!)。当我有一个打开的项目并决定打开下面的项目时会出现问题:顶部位置增加了打开的项目高度,而我单击的第二个项目超出了顶部。
按照下面的 FIDDLE:如果我打开 project1 然后我点击 project2,这会出现在错误的顶部。如果我尝试在另一个打开的项目下方打开任何项目,则相同。
JS
$('.accordion-section-title').on('click', function () {
var idName = $(this).attr('id');
$('html, body').animate({
scrollTop: $("#" + idName).offset().top
}, 500);
});
这是FIDDLE
【问题讨论】:
-
如果将
scrollTop: $("#" + idName).offset().top - 10}, 500)替换为scrollTop: $(this).offset().top - 10}, 500)会怎样? -
它没有改变,我认为这些项目本身就可以滚动:这是我想要摆脱的不断变化的顶部位置。
-
哦,再看一遍,我相信问题是由打开手风琴部分的窗口计算滚动位置引起的。当它们关闭时,内容的高度会改变,因此窗口会滚动到错误的 Y 位置。
-
Exaclty,我不知道如何让所有项目都停在右上方,而不需要滚动计算打开项目的空间。
标签: javascript jquery accordion offset scrolltop