如何在分配函数后删除 onmouseout 事件



我有一个问题,我正在为 onmouseout 事件分配一个函数,但在运行该事件后,我需要删除它。 非常感谢您的帮助。

这取决于您的代码,如果您使用 d3 执行此操作,那么您可以说

在 onmouseout 事件函数中:

element.on("mouseout",func);
function func(){
    /*do your stuff*/
    element.on("mouseout",null);
}

如果通过事件属性(如 <div onmouseout="..." >)绑定事件,则必须重构它。在这种情况下,只需使用 d3 on() 函数绑定事件即可。

如果要将多个处理程序绑定到同一事件,可以使用命名空间:通过将.name追加到事件,可以更具体地处理它们。

我假设您在d3on事件中添加了事件侦听器。 他们删除事件的文档如下:

如果事件侦听器已在 选定的元素,则在新的 添加了侦听器。为同一事件注册多个侦听器 type,该类型后可以跟一个可选的命名空间,例如 "click.foo"和"click.bar"。若要删除侦听器,请将 null 作为 听者。

我无法更正您的代码,因为您没有添加任何代码。

另一种方法是使用 jQuery:

$(element).bind("mouseout", myFunction);
$(element).unbind("mouseout");

jQuery 解绑jQuery bind

您还可以在第一个参数中使用可选命名空间,例如:

"mouseout.myNamespace"

使用此命名空间,可以绑定/取消绑定同一类型的多个事件。

另一件你可能感兴趣的事情:jQuery stopPropagation

最新更新