9

我可以使以下内容更简单(而不是使用两次“取消委托”)吗?

$("#div1").undelegate("div", "mouseenter").undelegate("div", "mouseleave");

我不希望 mouseenter 和 mouseleave 以外的事件处理程序受到干扰。

4

2 回答 2

24

用空格分隔您的活动。

$("#div1").undelegate("div", "mouseenter mouseleave");

你应该使用onoff虽然。

$("#div1").off("mouseenter mouseleave", "div");

http://api.jquery.com/undelegate/

.undelegate() 方法是一种删除已使用 .delegate() 绑定的事件处理程序的方法。从 jQuery 1.7 开始,.on() 和 .off() 方法是附加和删除事件处理程序的首选方法。

于 2012-07-27T17:42:45.267 回答
1

在这种特定情况下,您可以使用和的简写.hover()mouseentermouseleave

​$("#div1").off("hover", "div");

​是 .off()从 jQuery 1.7 开始删除事件处理程序的推荐方法。

于 2012-07-27T17:52:08.637 回答