我有一個庫函數,我無法更改,它使用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