如何在分配功能后删除onmouseout事件?

时间:2012-09-21 16:06:57

标签: javascript svg d3.js

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

3 个答案:

答案 0 :(得分:9)

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

在你的onmouseout事件函数中:

element.on("mouseout",func);

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

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

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

答案 1 :(得分:3)

我假设您添加了d3's on event的事件监听器。他们删除活动的文件是这样的:

  

如果事件监听器已经注册了相同的类型   选中的元素,在新的之前删除现有的侦听器   监听器已添加。为同一事件注册多个侦听器   在类型中,类型后面可以跟一个可选的命名空间,例如   &#34; click.foo&#34;和&#34; click.bar&#34;。要删除侦听器,请将null作为   监听器。

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

答案 2 :(得分:0)

另一种方法是使用jQuery:

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

jQuery unbind jQuery bind

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

"mouseout.myNamespace"

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

另一件事可能对你很有意思: jQuery stopPropagation