Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对同一项目多次调用时,scrollTop会跳转_Javascript_Jquery_Html_Scrolltop - Fatal编程技术网

Javascript 对同一项目多次调用时,scrollTop会跳转

Javascript 对同一项目多次调用时,scrollTop会跳转,javascript,jquery,html,scrolltop,Javascript,Jquery,Html,Scrolltop,我正在使用jquery的scrollTop函数,不明白为什么在同一项上多次调用它时,它会跳转 我把这些放在一起是为了说明这个问题。单击“测试”按钮时,它会交替滚动到指定的项目和列表上的其他位置 $(“#按钮”)。单击(函数(){ $('.items').scrollTop($('li.8').offset().top);//滚动到项目8 }); .items{ 最大高度:80px; 溢出:自动; } 阿尔米、琼尼、奥克莱尔、唐奈特、奥尔巴赫、特林、贝门特、玛格丽特、布莱恩、威廉、布伦、坦皮

我正在使用jquery的scrollTop函数,不明白为什么在同一项上多次调用它时,它会跳转

我把这些放在一起是为了说明这个问题。单击“测试”按钮时,它会交替滚动到指定的项目和列表上的其他位置

$(“#按钮”)。单击(函数(){
$('.items').scrollTop($('li.8').offset().top);//滚动到项目8
});
.items{
最大高度:80px;
溢出:自动;
}

    阿尔米、琼尼、奥克莱尔、唐奈特、奥尔巴赫、特林、贝门特、玛格丽特、布莱恩、威廉、布伦、坦皮、奥泽拉、达林、克莱门蒂娜、萨沙、多夫曼、,约瑟夫·赫克特、惠特尼、亨德肖特、利达、霍姆斯、埃尔斯沃斯、杰菲、卡琳、诺拉、凯利、帕特里卡、莱克、伊诺拉、莱梅尔、夏奈尔>林格费尔特、格雷厄姆、曼格姆、梅勒、莫尼卡、莫尼卡、麦克拉尼、阿利森、迈耶森、卢拉、莫尔、埃博尼、保尔森、梅里、普里布尔、里夫卡、普里维特、弗涅斯、,蒂尔达
  • Rojo,伊洛伊
  • Semple,Dwana
  • Sifuntes,蒂龙
  • Sloat,但丁
  • Slocum,Shanna
  • Stolp,考特尼
  • Till,Lucien
  • Ulman,JenniferWadlow,卡桑德拉,马蒂·泽拉尔斯

test
这是因为您正在获取offset属性的项目,offset返回相对于文档的元素位置,这意味着当您在UL上滚动时,li会发生8级偏移更改,在这种情况下,您必须使用位置:

$('#button').click(function () {
$('.items').scrollTop($('li.8').position().top);  // scroll to item 8
});

为了使其正常工作,父元素应该具有相对位置,您可以检查此小提琴:

这是因为您正在获取offset属性的项,而offset返回相对于文档的元素位置,这意味着当您在UL上滚动时,li会发生8级偏移变化,在这种情况下,您必须使用位置:

$('#button').click(function () {
$('.items').scrollTop($('li.8').position().top);  // scroll to item 8
});

为了使其正常工作,家长应具有相对位置,您可以检查此小提琴:

要使其停止跳跃,您可以尝试以下代码:

$('#button').click(function () {
   $('.items').scrollTop(0);
   $('.items').scrollTop($("li.8").position().top);
});

要使其停止跳跃,可以尝试以下代码:

$('#button').click(function () {
   $('.items').scrollTop(0);
   $('.items').scrollTop($("li.8").position().top);
});

当我测试这个时,它会产生相同的结果result@Jess您必须使父ul位置相对。编辑的版本工作完美,感谢您的帮助。我很高兴听到这一点。当我测试这一点时,它会产生相同的结果result@Jess您必须使父ul位置相对。编辑的版本工作完美,谢谢你的帮助,我很高兴听到你这么说。非常感谢你的建议,如果再加上上面建议使用position()而不是offset(),这对我来说效果最好。在跳到顶部之前再跳回到底部似乎有点困难,但是,关于如何使其正常工作还有其他建议吗?要解决这个问题,您需要了解如何获得“li.8”相对于容器的位置。items'(例如,您想要的元素的位置离容器/顶部的起始位置有多远,就好像它是一个平面设计一样)。非常感谢您的建议,这与使用position()而不是offset()的建议相结合时对我最有效上图。在往下跳之前先跳到顶部似乎有点困难,但是,关于如何使其正常工作,还有其他建议吗?要解决此问题,您需要了解如何获得“li.8”相对于容器的位置。items'(例如,所需元素的位置距离容器/顶部的起始位置有多远,按平面设计计算)。