jQuery 解除绑定事件
Posted
技术标签:
【中文标题】jQuery 解除绑定事件【英文标题】:jQuery unbind event 【发布时间】:2011-08-25 10:18:59 【问题描述】:如果我编写 jQuery 代码如下;
$("input:checkbox").unbind("touchstart");
这里的touchstart
只会被 iPad 识别。
这会在不理解touchstart
的桌面浏览器上引起问题吗?我应该将这段代码放在 if (iPad) 块中
即使我在 JS 库中找不到任何对它的引用,jQuery 也是如何理解 "touchstart"
的。
【问题讨论】:
不会造成任何问题。 jQuery 使用一个特殊的事件库而不是浏览器提供的默认 DOM 实现。 所以你基本上是说错误不会出现,因为我使用的是 jQuery 语句......如果我有一些普通的 JS 代码,比如使用 document.addEventListenser("touchstart",Fn).. .在那种情况下,它会导致桌面浏览器出错?请确认.. 是的,这正是我要说的。这些事件是 jQuery 生成的,与实际的 DOM 事件无关。 不确定我们是否在同一页面上...但是即使使用带有“touchstart”的普通JS addEventListener 也不会抛出任何错误...您可以看到jsfiddle.net/dcgb7/3 【参考方案1】:如果事件不受支持,您仍然可以取消绑定该事件。 jQuery 不理解 touchstart,至少不是你期望的那样。它只保存一个名为“touchstart”的处理程序列表,如果您调用 unbind,它将删除它们。如果浏览器不支持 touchstart,您将不会看到触发的事件。
请记住,不支持触摸事件是一回事,没有触摸设备是另一回事,最新的桌面浏览器确实支持触摸事件。
【讨论】:
所以你说我不需要将代码放在 if (iPad) 块中,因为它不会在某些桌面浏览器上给出任何错误(它只是无法理解) 没错。从某种意义上说,jQuery 并不关心您绑定或取消绑定的事件,该事件不会触发,其他一切都是一样的,没有错误。您可以绑定它们,可以获取它们,也可以取消绑定它们。我刚刚在 jquery.com 上用我不起眼的 Firefox 3.6 试了一下,它运行没有错误。绑定也没有错误。以上是关于jQuery 解除绑定事件的主要内容,如果未能解决你的问题,请参考以下文章