我有一个我无法更改的库函数,它使用MooTools来附加事件。
$(document.body).addEvents({
"mousedown:relay(a.className)": function (a, b) {
if (!a.rightClick) {
//do something
}
return false
});
我对MooTools并不太熟悉,但我已经尝试了所有我能想到的事情,用jQuery.click()
事件来覆盖它。
我尝试将听众附加到.className
,其父母(几级),甚至整个body
;每次,我在function (e) { e.preventDefault() }
事件中使用click
。
我一直认为preventDefault()
会始终阻止与新触发事件相关的所有默认事件。
任何人都可以告诉我为什么我的事件覆盖不起作用吗?
//编辑
我不打算使用MooTools,因为我们将来可能会将所有东西都移植到jQuery(或者至少不是MooTools)。不过,我想我不得不这样做。
//编辑2
我以几种不同的方式尝试jQuery.off()
,包括
$j('body').off('click mousedown','.className');
它仍然无法删除MooTools事件。
//编辑3
我决定最好不要搞乱MooTools;我已经更改了类名,因此MooTools没有做任何事情,只是复制了上面代码的//do something
部分发生的事情。
由于MooTools事件监听器末尾的return false
,我觉得我无法对click事件做任何事情。
答案 0 :(得分:1)
根据您使用的JQuery版本,您可以尝试使用off
(JQuery 1.7或更高版本)或unbind
来删除MooTools事件处理程序。
我不确定他们是如何在幕后工作的,但我认为他们会删除事件处理程序,无论他们如何约束事件。然后,您可以使用JQuery应用自己的事件处理程序。