我想從本地事件的處理程序中觸發一個自定義事件,在這些條件下:如何觸發jQuery的自定義事件,傳遞原始事件和數據
- 我希望處理程序是形式:
function(event, arg) {}
,其中 event
是原始,原生事件(這樣我就可以調用event.preventDefault()
)arg
是一些數據由trigger
ER傳遞(原事件的處理程序)- 個這兩個事件(本地&定製的)都在相同的元素解僱(所以自定義事件的名稱必須與原來的不同)
我能夠遠遠得到這一點,它的工作原理:
// the native event handler
function(event) {
var e = jQuery.Event("some_custom_event");
e.foo = 'bar';
$(this).trigger(e);
if (e.isDefaultPrevented())
event.preventDefault();
}
// an example handler for the custom event:
function (event) {
alert(event.foo);
event.preventDefault();
}
我想我也可以將原始事件和foo
作爲自變量傳遞給自定義事件處理程序,但我想要一個看起來很標準的處理程序(沒有function(event1,event2
)。
可以在jQuery中輕鬆地完成任務嗎?
您的解決方案不允許我在自定義事件處理程序中的原始事件上設置「preventDefault」。 – ori 2012-03-20 18:37:24
@ori您能否詳細說明'preventDefault'應該發生什麼?它在第一個地方工作嗎?我確定添加添加參數不會影響以前工作的任何內容。 – 2012-03-20 18:41:45
首先,我在上面的代碼中犯了一個錯誤,看看。我正在構建一個我希望能夠與之交互的jQuery插件。也許某種回調更適合。基本上我想要一個可以引用原始事件的自定義事件處理函數(可以調用'preventDefault'),但是如果我執行'.trigger('custom',[event,foo])',那麼處理函數變成'function c_event,n_event,foo){}'看起來很醜。 – ori 2012-03-20 19:07:00