jQuery滚动顶部无法正常工作

时间:2014-12-03 14:51:35

标签: jquery html css scroll jquery-scrollable

我的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);
}

1 个答案:

答案 0 :(得分:1)

1:滚动顶部相对于您的#devicebox_X元素,因此如果您想将设备框滚动到listitem的位置,则devicebox元素必须具有CSS样式position: relative

2:要使用相对于它的偏移父级的偏移量,您需要使用jQuery的position()方法,该方法与offset方法完全相同但后来相对于它的父母。

请参阅jQuery's description of the position method

然后它应该工作。