如何删除svg元素中的事件处理程序?

时间:2014-08-13 21:10:00

标签: javascript svg

使用鼠标悬停和功能" foo"例如。 "这"是svg元素。

this.mouseover(foo); // adds handler
this.unmouseover(foo); // removes handler

但如果我正在做的话

this.mouseover(function(parameter){foo(parameter);}); // say I need to pass a parameter

我可以删除此处理程序吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

没有;你没有对匿名函数的引用。

解决此问题的一种方法是在mouseover电话上方声明功能:

var param = parameter;
var foobar = function(){foo(param);
this.mouseover(foobar);
this.unmouseover(foobar);

答案 1 :(得分:0)

我不推荐任何方式。

我必须,有一种方法可以从内部访问匿名函数。这已被弃用,无法在严格模式/ ES5 +中使用:

var anonymousFn = null;
this.mouseover(function(parameter) {
  foo(parameter);
  anonymousFn = arguments.callee;
  // now anonymousFn has a reference to the annymous function
});

请参阅:arguments.callee