【发布时间】:2016-01-07 20:37:13
【问题描述】:
我有多个 DOM 元素。当每个元素都在窗口中可见时,我会在该元素上触发动画。
每个元素将窗口滚动事件注册到同一个事件处理程序,向该处理程序传递元素的 ID 和动画的特定事件回调函数。
这个单一事件处理程序测试元素是否在屏幕上,如果是则触发回调。
但是......即使在触发回调之后,它仍然会监听窗口滚动事件。如何关闭滚动侦听器? jQuery“关闭”不起作用。
$(window).on('scroll', function () {
sharedFunctionsModuleName.initialAnimationWhenChartBottomVisible({
chartID: chartID,
callbackFunction: thisWebpageModuleName.animationFunctionName
});
});
【问题讨论】:
-
你是如何尝试的
off,$(window).off('scroll'); -
嗨 Tushar,是的,我试过了,但是这会停止所有元素的侦听器。我想要做的是为每个 dom 元素注册一个窗口滚动事件,然后在事件处理程序触发一次后停止该元素特定的侦听器。
-
我想滚动侦听器/侦听器继续侦听没什么大不了的。似乎我想在不再需要时停止收听。 1 个事件,1 个处理程序,多个元素。
-
使用命名空间事件,例如
scroll.namespace。然后,您可以关闭与命名空间关联的所有事件,或该特定命名空间的滚动事件。 -
特里,太棒了!谢谢。 jQuery 事件命名空间来拯救。我在网上为那些感兴趣的人找到了这个:css-tricks.com/namespaced-events-jquery
标签: javascript jquery events listener handler