使用jQuery.click()覆盖MooTools事件

时间:2013-03-14 15:20:21

标签: javascript jquery javascript-events mootools preventdefault

我有一个我无法更改的库函数,它使用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事件做任何事情。

1 个答案:

答案 0 :(得分:1)

根据您使用的JQuery版本,您可以尝试使用off(JQuery 1.7或更高版本)或unbind来删除MooTools事件处理程序。

我不确定他们是如何在幕后工作的,但我认为他们会删除事件处理程序,无论他们如何约束事件。然后,您可以使用JQuery应用自己的事件处理程序。

http://api.jquery.com/off/

http://api.jquery.com/unbind/