唯一的事件命名空间

Unique event namespacing

本文关键字:命名空间 事件 唯一      更新时间:2023-09-26

假设您有一个插件,它将滚动事件附加到窗口并将滚动位置与元素的偏移量进行比较。当然,您需要一种方法在不需要时取消绑定该事件。

我想做一些类似的事情:

unbind("scroll.uniqueNamespace")

但是,如果您在多个元素上使用插件,它将使用"scroll.uniqueNamespace"取消绑定所有滚动事件,当我只需要删除一个元素时。

我正在考虑唯一地存储元素和命名空间的数组/对象,但这似乎很混乱。

为了解除绑定特定的侦听器,jQuery接受第二个参数.unbind

.unbind( eventType [, handler(eventObject) ] )
因此,您可以将侦听器

函数存储在元素数组中,并在取消绑定时将该侦听器传递给取消绑定方法。像这样:

unbind("scroll.uniqueNamespace", els[el].listener)

另外,重复我对你的问题的评论,但你也可以只添加一个侦听器,并只检查该侦听器中的活动元素。

来源: http://api.jquery.com/unbind/