2014-01-14 52 views
0

我在我的页面上有数百行的表格。每行包含选择对象。例如:如何获取表格中HTML元素的滚动位置?

<tr> 
    <td> 
    <select onchange="changeSkillLevel(this)"> 
    <option value='1'>High</option> 
    <option value='2'>Medium</option> 
    <option value='3'>Low</option> 
    </select> 
    </td> 
</tr> 

当用户更改选择选项时,页面通过location.href重新加载,并附加querystrings用于功能。所有这些都可以正常工作,但是如果用户在第300行内的选择操作的页面底部停留,重定向后,它们将被带回到页面的顶部。重定向后,我想将滚动位置重置为它们所在的位置,最好突出显示包含刚刚修改的选择对象的<tr>

我似乎无法得到jQuery的scrollTop的返回什么,但0:

function changeSkillLevel(obj){ 
    alert($("#" + obj.id).scrollTop()) 
    [...] 
} 

警报总是返回0。我不知道我的选择是正确的得到OBJ(本)方式,我不知道我是否正确使用scrollTop()。

如果我可以捕获滚动位置,我想我可以在qstring/url中传递它,然后当页面重新加载时,抓住滚动参数并使用jquery强制滚动页面回到用户所在的位置。

1-我该如何做到这一点? 2-什么是让jquery选择器附加到“obj”参数,它来自选择器对象中的“this”的最佳方式?

谢谢!

+1

只需将书签插入行中并在URL中匹配#即可。 –

+0

我之前在行中尝试过书签,它似乎没有工作。你能举个例子吗?我喜欢这种方法,根本不需要使用js。 – HerrimanCoder

+0

书签只是带有'name =“uniqueanchorname”'的锚,没有别的。重新加载链接只需要附加在它们末尾的'#uniqueanchorname'。您可以通过手动更改您的URL来测试现有锚点以指向每个名称。从内存中,标准是在书签定位符上设置'id ='和'name ='以支持旧浏览器。 –

回答

1

提交选择时内容的大小是否会发生变化? 如果没有,你可以只使用当前的滚动位置

$(document).scrollTop() 

,与其他数据提交沿,并再次滚动文档到那个位置。甚至可能是更好的解决方案,因为当使用原始滚动位置时页面不会跳转。

+0

完美!谢谢snmueller89。 – HerrimanCoder