我想从本地事件的处理程序中触发一个自定义事件,在这些条件下:如何触发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