[英]Overriding a MooTools event with 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)。 不过,如果没有其他办法,我想我将不得不这样做。
// 编辑 2
我已经以几种不同的方式尝试过jQuery.off()
,包括$j('body').off('click mousedown','.className');
它仍然无法删除 MooTools 事件。
// 编辑 3
我决定最好不要乱用 MooTools; 我已经改变了类名,所以 MooTools 不做任何事情,只是复制上面代码的//do something
部分发生的//do something
。
我有一种感觉,因为在 MooTools 事件侦听器结束时return false
,我无法对 click 事件做任何事情。
根据您使用的 JQuery 版本,您可以尝试off
(JQuery 1.7 或更高版本)或unbind
以删除 MooTools 事件处理程序。
我不确定他们在幕后是如何工作的,但我认为无论他们如何绑定事件,他们都会删除事件处理程序。 然后您可以使用 JQuery 应用您自己的事件处理程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.