Javascript 如何删除svg元素中的事件处理程序?
以mouseover和函数“foo”为例。“this”是svg元素Javascript 如何删除svg元素中的事件处理程序?,javascript,svg,Javascript,Svg,以mouseover和函数“foo”为例。“this”是svg元素 this.mouseover(foo); // adds handler this.unmouseover(foo); // removes handler 但如果我在做: this.mouseover(function(parameter){foo(parameter);}); // say I need to pass a parameter 我可以删除此处理程序吗? 谢谢 No;您没有对匿名函数的引用 解决此问题的一种
this.mouseover(foo); // adds handler
this.unmouseover(foo); // removes handler
但如果我在做:
this.mouseover(function(parameter){foo(parameter);}); // say I need to pass a parameter
我可以删除此处理程序吗?
谢谢 No;您没有对匿名函数的引用 解决此问题的一种方法是在
mouseover
调用上方声明函数:
var param = parameter;
var foobar = function(){foo(param);
this.mouseover(foobar);
this.unmouseover(foobar);
我不推荐任何方式 我必须告诉你,有一种方法可以从内部访问匿名函数。这已弃用,在严格模式/ES5+下无法工作:
var anonymousFn = null;
this.mouseover(function(parameter) {
foo(parameter);
anonymousFn = arguments.callee;
// now anonymousFn has a reference to the annymous function
});
请看:哦,好吧。我希望能够避免再声明一个函数。。。但这不太可能。