使用Jquery off() on()或on on()

我知道我们可以使用jQuery on()函数附加事件,并再次使用off()删除它们。

在一个现有的项目中,我有时会遇到类似这样的代码

$("#SomeId").off("click").on("click");

或者有时使用类似于这样的命名空间时:

$("#SomeId").off("click.namespace").on("click.namespace");

据我所知,只能将单个事件附加到事件的特定命名空间。

例如,如果我只是打开(“点击”),它将附加我指定的功能,覆盖当前分配的功能添加到“点击”事件。

如果我打开(“click.namespace”),它将附加我指定的函数覆盖分配的当前功能添加到click.namespace。

如果on()已经替换分配给指定事件/ event.namespace的任何函数,通过链接关闭(“单击”)到on(“单击”)来删除任何事件的要点是什么?

我们的代码中有多余的语法,还是有一个我错过的原因?

编辑 – 谢谢kapa
我现在觉得有点傻,我纠正了我上面的错误知识。几次执行on(“click.namespace1”)我现在观察到数据(“事件”)对象不断添加到点击事件数组。

我认为这里回答了我自己的问题。这就是为什么会使用off(“event.namespace”)来确保没有其他附加到那个确切的事件/ event.namespace。

解决方法

实际上,您可以将多个事件处理程序附加到同一个事件中,而不仅仅是一个。即使使用命名空间。查看 this quick demo

实际上,命名空间的一个优点是您可以标记一组事件处理程序,并且稍后可以轻松地删除它们,以避免多次附加它们。这是这条线呢?

$("#SomeId").off("click.namespace").on("click.namespace");

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...