已经读过可以用这一行检测滚动:
$('window').one('scroll', function() { } );
如果有此内联代码:
var TimeVariable=setInterval(function(){ DoJQueryStuff() },300);
function DoJQueryStuff()
{
if(typeof jQuery == "undefined") return;
window.clearInterval(TimeVariable);
$('body').one('mousemove', function() { alert('mouse'); } );
$('window').one('scroll', function() { alert('scroll'); } );
}
在加载JQuery之前,每300毫秒调用一次DoJQueryStuff。 如果我将鼠标移动到屏幕上的任何位置,我会收到“鼠标”警报。 如果我向下滚动,我不会收到“滚动”警报。 即它没有开火。
非常感谢任何帮助。
大卫
答案 0 :(得分:6)
首先请使用jquery ready
http://api.jquery.com/ready/方法。我不想说你的实现是错误的,但比jquery ready方法慢。
你的滚动功能基本上没有被执行,因为你将它绑定到错误的对象。
当您使用jquery引用window
对象时,请不要将其包含在叛逆者中。
如果你这样做,jquery将实习调用document.getElementsByTagName
并找不到标记名window
,因为window
不是window.document
节点的子节点。因此,您的滚动检测功能永远不会被触发,因为jquery无法将eventListener
绑定到您的提交元素标记名。
简单地将其绑定到window
而不含叛逆者。这会强制jquery将scroll事件直接绑定到window
DOM对象,在该对象中,您的函数在滚动时被正确触发。
示例:
$(window).ready(function(){
$(this).one('mousemove', function() {
// mouse move
}).one('scroll', function(){
// scroll
});
});