Javascript 当我向顶部添加新元素时,如何将位置保持在可滚动列表中?

Javascript 当我向顶部添加新元素时,如何将位置保持在可滚动列表中?,javascript,jquery,html,Javascript,Jquery,Html,当我使用jQuery的prepend()函数将一些元素添加到可滚动列表中,并且我最初位于列表的顶部时,列表会自动滚动到第一个添加的元素的顶部,并且不会保持该位置。我怎样才能防止这种情况 这是我的代码示例,显示了我的问题: jQuery(文档).ready(函数($){ $(“按钮”)。单击(函数(){ [1,2,3,4,5,6,7,8,9]{ $(“div”)。前缀(“”); }); }); }); div{ 边框:1px实心; 宽度:200px; 高度:350px; 溢出y:滚动; 溢出x:

当我使用jQuery的
prepend()
函数将一些元素添加到可滚动列表中,并且我最初位于列表的顶部时,列表会自动滚动到第一个添加的元素的顶部,并且不会保持该位置。我怎样才能防止这种情况

这是我的代码示例,显示了我的问题:

jQuery(文档).ready(函数($){
$(“按钮”)。单击(函数(){
[1,2,3,4,5,6,7,8,9]{
$(“div”)。前缀(“”);
});
});
});
div{
边框:1px实心;
宽度:200px;
高度:350px;
溢出y:滚动;
溢出x:隐藏;
}
跨度{
高度:40px;
宽度:200px;
显示:块;
背景:灰色;
}
span.new{
背景:红色!重要;
}
跨度:第n个孩子(奇数){
背景:浅灰色;
}


前置元素
如果要保持滚动位置,可以跟踪div的scrollTop位置和scrollHeight,然后使用scrollTop–如:

jQuery(文档).ready(函数($){
$(“按钮”)。单击(函数(){
设$div=$(“div”);
让top=$div.scrollTop();
设scrollHeight=$div.prop(“scrollHeight”);
[1,2,3,4,5,6,7,8,9]{
$div.prepend(“”)
});
$div.scrollTop(top+$div.prop(“滚动高度”)-滚动高度);
});
});
div{
边框:1px实心;
宽度:200px;
高度:350px;
溢出y:滚动;
溢出x:隐藏;
}
跨度{
高度:40px;
宽度:200px;
显示:块;
背景:灰色;
}
span.new{
背景:红色!重要;
}
跨度:第n个孩子(奇数){
背景:浅灰色;
}


前置元素
您的代码片段没有演示您描述的行为。如果在单击按钮之前向下滚动,滚动位置仍然相同。你的“问题”是“如何滚动到底”@Wimanicesir我不这么认为。可能更像是“如何保持位置”,从技术上讲,当你在顶部时,滚动位置没有改变。因为在添加项目后,它仍然位于顶部。您需要获得初始第一个项目的位置,然后滚动到它,但在添加之前,您需要确定“第一个”项目的位置,以及当用户滚动该项目时,哪些项目符合“第一个”的条件list@Mr.Jo可能您正在寻找的行为是-在添加项目之前,获取滚动条的位置,然后在添加项目之后,获取添加项目的高度,然后滚动到原始滚动位置和添加项目的高度之和,这样你就达到了你喜欢的高度!非常感谢你的帮助。现在我学到了一些新的东西。不要在循环中预先设置DOM。连接内部循环-而不是在循环之后只预结束一次。我认为它只是作为添加许多项的示例(尽管您是对的:-)