我想在这些条件下从本机事件的处理程序中触发自定义事件:
function(event, arg) {},whereevent是原始的本机事件(所以我可以打电话event.preventDefault())arg是triggerer 传递的一些数据(在原始事件的处理程序中)我能够做到这一点,它的工作原理:
// 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();
}
Run Code Online (Sandbox Code Playgroud)
我想我也可以传递原始事件和foo自定义事件处理程序的参数,但我想要一个标准的处理程序(否function(event1,event2).
可以在jQuery中轻松完成我想做的事吗?
该trigger函数有两种风格,我认为你应该看看第一个语法.trigger( eventType [, extraParameters] ).
如果我理解正确那么你需要做的是你foo作为额外的参数传递如下,
$(this).trigger(e, [foo]);
Run Code Online (Sandbox Code Playgroud)
jQuery文档的一个例子如下,
$("p").click( function (event, a, b) {
// when a normal click fires, a and b are undefined
// for a trigger like below a refers to "foo" and b refers to "bar"
} ).trigger("click", ["foo", "bar"]);
Run Code Online (Sandbox Code Playgroud)
从文档.. 阅读更多..
.trigger(eventType [,extraParameters])
eventType包含JavaScript事件类型的字符串,例如click或submit.
extraParameters传递给事件处理程序的附加参数.