scrollTop为javascript中的所有文档元素返回0,但滚动事件在body标记上触发
scrollTop returns 0 for all document elements in javascript but scroll event fires on body tag
我为body标记上的滚动事件制作了一个事件处理程序,该事件正确触发。然而,当我试图使用scrollTop()找到滚动条的位置时,我无法做到这一点。为了弄清楚哪个元素正在滚动,我记录了所有DOM元素的scrollTop[()],但令人惊讶的是,所有元素都为0。
$('body').scroll(function () {
var all = document.getElementsByTagName("*");
for (var i=0, max=all.length; i < max; i++) {
console.log('scrolltop', all[i].scrollTop);
}
});
我只想知道滚动条的位置以及滚动条是否已经到达末尾。我试过$(document).soll()和$(window).sroll,但都没有启动。该事件仅适用于body标记。
使用window
对象通常是跟踪滚动最可靠的。
ScrollTop也只真正跟踪窗口的滚动量,尽管通常对此感到困惑,但它并不能跟踪元素离页面顶部的距离。为此,您需要使用offset
。
因此,我只是简单地将您的代码更改为在window
滚动上运行,还将您的逻辑更改为使用jQuerys each
函数,这将使事情变得更简单
JS:
$(window).scroll(function () {
$('*').each(function (){
console.log(
'Element Text:', $(this).text(),
' | From Top', $(this).offset().top
);
})
});
使用上面的JS,您将在控制台中看到以下输出:
Element Text: hello87 | From Top 1556
Js报价:https://jsfiddle.net/wigster/t1e3dee8/1/
相关文章:
- 只覆盖箭头键滚动事件
- Javascript如何找到滚动事件的来源
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- jquery/ajax无限滚动事件
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- 在滚动时,在隐藏滚动条和隐藏溢出的同时触发事件
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 将事件列表滚动到给定月份的第一个事件
- '滚动'事件未在CompositeView中激发
- 从父元素取消绑定滚动事件并绑定到子元素
- JavaScript/jQuery未触发滚动事件
- 如何使用javascript检测不可滚动元素中的滚动事件和方向
- Javascript鼠标滚轮事件滚动
- 点击未触发溢出事件:滚动
- 将jquery事件滚动与“;在“上”;
- actionscript 3-as3中的鼠标事件滚动flash和html.有没有办法停止使用javascript
- jquery和事件滚动