我的HTML内容是从jquery生成的,它取决于ajax响应。在HTML内容中,我有#leftsection
css "overflow-y:scroll;"
内部"#leftsection"
我有一些框说"#devicebox_"+i
其中有{c} "overflow-y:hidden;"
我将动态列表附加到"#devicebox_"+i
,如果列表内容的数量是> 6我正在申请"#devicebox_"+i
我的左侧部分和设备框的HTML内容看起来像这样
<div id="leftsection">
<div id="devicebox_1">
<div id="listitem_1">LIST ITEM 1</div>
<div id="listitem_2">LIST ITEM 2</div>
<div id="listitem_3">LIST ITEM 3</div>
<div id="listitem_4">LIST ITEM 4</div>
<div id="listitem_5">LIST ITEM 5</div>
<div id="listitem_6">LIST ITEM 6</div>
<div id="listitem_7">LIST ITEM 7</div>
<div id="listitem_8">LIST ITEM 8</div>
</div>
</div>
以下是我的jQuery向下滚动devicebox_1。
请记住,有多个设备包,例如devicebox_1,devicebox_2,devicebox_3作为内容是动态的,listitem也是如此。加载设备箱及其相关项目列表后。
正在逐个发送ajax请求来处理LIST ITEMS。我想要的是将当前的devicebox(devicebox_1)向下滚动到正在处理的列表项。
以下是我用来向下滚动但没有工作的小jQuery
for( var i=0; i< $(itemlist).size(); i++)
{
$('#devicebox_'+currDeviceid).animate({
scrollTop: $('#listitem_'+i).offset().top
}, 100);
}
答案 0 :(得分:1)
1:滚动顶部相对于您的#devicebox_X元素,因此如果您想将设备框滚动到listitem的位置,则devicebox元素必须具有CSS样式position: relative
。
2:要使用相对于它的偏移父级的偏移量,您需要使用jQuery的position()
方法,该方法与offset
方法完全相同但后来相对于它的父母。
请参阅jQuery's description of the position
method
然后它应该工作。