我想通过触发函数传递 eventObject,这意味着当我手动触发任何事件时说:
$(".test").bind({ click : Testing });
$('.test').trigger("click");
function Testing(e)
{
}
当通过mouseclick调用函数测试时,参数e包含了eventobject,所以当我们手动触发它时我想要同样的东西。我们可以在手动触发任何事件时传递eventobject,这可能吗?
我想通过触发函数传递 eventObject,这意味着当我手动触发任何事件时说:
$(".test").bind({ click : Testing });
$('.test').trigger("click");
function Testing(e)
{
}
当通过mouseclick调用函数测试时,参数e包含了eventobject,所以当我们手动触发它时我想要同样的东西。我们可以在手动触发任何事件时传递eventobject,这可能吗?
正如gdoron 指出的(+1),jQuery 将为您提供事件对象。但是如果你愿意,你可以显式地创建它,用 jQuery 无法为你填写的信息来填充它。您可以创建一个Event
对象并将其传递给trigger
.
以下是使用默认事件对象和创建自己的事件对象的示例:Live copy | 来源
jQuery(function($) {
$(".test").click(function(e) {
display("Received click on target");
display("typeof e = " + typeof e);
if (e) {
display("e.type = " + e.type);
if (e.type === "click") {
display("Coords: (" + e.pageX + "," + e.pageY + ")");
}
}
});
//Create a new jQuery.Event object without the "new" operator.
var e = $.Event("click");
// Fill in more info
e.pageX = 42;
e.pageY = 27;
// Trigger an artificial click event
display("Issuing a click via <code>$('.test').trigger('click')</code>");
$('.test').trigger("click");
// Trigger an artificial click event
display("Issuing a click creating our own event object with more info on it.");
$('.test').trigger(e);
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});