检测用户的jquery事件触发器或代码调用
我有一些window.onscroll
事件
$(window).scroll(function(e){ //My Stuff });
但在我的代码中,我将动画滚动调用到某些地方
$('html, body').stop().animate({ scrollTop:555 }, 1000);
所以我如何检测页面是由用户滚动或由我的代码调用。 我当前的解决方案是在我的代码中调用animate
之前放置一个标志,然后清除它,但这不是一个聪明的解决方案。 我也读过关于检测e.which
或e.originalEvent
但它不起作用。 我想你的专家在这里有一个很好的解决方案。
$('#scroller').scroll(function(e) { if (e.originalEvent) { // scroll happen manual scroll console.log('scroll happen manual scroll'); } else { // scroll happen by call console.log('scroll happen by call'); } }); $('#scroller').scroll(); // just a initial call
当你通过调用滚动时, e.originalEvent
将是undefined
但是当手动scroll
时,它将给出scroll
对象。
DEMO
我已经重新提出了这个问题,得到了2个有用的答案。
我会在这里链接这个问题给其他人找到这个post。
检测是否在jQuery中手动触发滚动事件