我有一个库函数,我无法更改,它使用MooTools来附加事件。用jQuery.click覆盖MooTools事件()
$(document.body).addEvents({
"mousedown:relay(a.className)": function (a, b) {
if (!a.rightClick) {
//do something
}
return false
});
我不是太熟悉MooTools的,但我已经试过所有我能想到的与jQuery.click()
事件来覆盖它。
我试着把一个听众连接到.className
,它的父母(几个级别),甚至整个body
;每次我在我的click
事件中使用function (e) { e.preventDefault() }
。
我一直认为preventDefault()
将始终阻止与新触发事件相关的所有默认事件。
任何人都可以启发我为什么我的事件覆盖不起作用?
//编辑
我不希望使用MooTools的,因为我们将在未来很可能端口一切的jQuery(或至少不MooTools的)。不过,如果没有别的办法,我想我必须这样做。
// EDIT 2
我试过jQuery.off()
几种不同的方式,包括 $j('body').off('click mousedown','.className');
,它仍然无法删除MooTools的事件。
//编辑3
我决定这是最好还是不惹MooTools的;我已经更改了类名,所以MooTools没有做任何事情,只是复制了上面代码的//do something
部分中发生的事情。
我有一种感觉,因为MooTools事件监听器末尾的return false
,我无法对click事件做任何事情。
出于好奇,为什么你要重写事件?如果你已经有一个点击事件,为什么你不能在那里处理额外的逻辑? – 2013-03-14 15:21:46
我无法添加或更改库(使用MooTools的代码),如果存在一些新条件,我只需要让它运行。 – 2013-03-14 15:22:52
如果你想阻止代码运行,你不能简单地[删除事件](http://mootools.net/docs/core/Element/Element.Event#Element:removeEvents)? – mgibsonbr 2013-03-14 15:23:49