tac*_*aco 3 javascript jquery scrolltop
我本质上在div中有一个无序的列表项列表,不能正确滚动到下一个元素.我只是想要一个按钮来向上和向下滚动列表.
虽然代码会滚动,但它与li元素不匹配.每次点击后,它会向上滚动一点,然后在下一次点击时向下滚动.我试过走DOM并验证它滚动到的li元素是一个元素,但没有看到问题.
我有以下jsfiddle:http: //jsfiddle.net/YD9s5/9/
要素是:
photos-divphotos-li(哎呀,暂时离开)photo-li-X其中X是数字用于滚动div的代码是:
$('#photos-div').scrollTop($('#photo-li-' + i).offset().top);
Run Code Online (Sandbox Code Playgroud)
该i变量递增,你可以看到.
问题是.offset()获取元素相对于整个文档的位置,并且该位置不断向上移动.所以,一旦你滚动到第1项,则返回.offset().top该项目1 目前有文件,这是现在所在的项目0 使用是.
添加console.log( $('#photo-li-0').offset() );到您的scrollToElement()功能的顶部,你会明白我的意思.请注意,顶部偏移量不断减小,当它从文档顶部移开时会快速移动到负数.
修复是取$('#photo-li-'+i)和$('#photo-li-0')(和容器$('#photos-li')本身)的偏移量之间的差异,然后滚动到它:
var newpos = $('#photo-li-' + i).offset().top - $('#photo-li-0').offset().top;
$('#photos-div').scrollTop(newpos);
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/mblase75/x4hQP/(包含其他改进)
| 归档时间: |
|
| 查看次数: |
5051 次 |
| 最近记录: |