xuhp

jQuery事件命名空间

为什么事件需要命名空间

在jQuery中可以对同一个元素绑定多个事件侦听器,如下所示:

$(element).on('click', fun1)
$(element).on('click', fun2)

当单击element元素时会同时触发fun1, fun2 两个事件侦听器,这是jQuery的一个便利的地方,不像原生 js 中的 onclick 新的侦听器会覆盖旧的。

如果想解绑 fun1 侦听器,保留 fun2 侦听器该怎么办?

$(element).off('click');

上面的代码会把所有的 click 事件侦听器都解绑。

那么如何用命名空间解决如上的问题呢?首页改写绑定的代码:

$(element).on('click.namespace1', fun1);
$(element).on('click.namespace2', fun2);

这是就可以用下面的代码进行解绑了:

$(element).off('click.namespace1');

jQuery 事件命名空间是如何实现的

源码还未看明白,等看明白了在添加。

参考文档

jQuery 事件的命名空间

blog comments powered by Disqus

最新博文