1

我想通过触发函数传递 eventObject,这意味着当我手动触发任何事件时说:

 $(".test").bind({ click : Testing });

 $('.test').trigger("click");

 function Testing(e)
 {
 }

当通过mouseclick调用函数测试时,参数e包含了eventobject,所以当我们手动触发它时我想要同样的东西。我们可以在手动触发任何事件时传递eventobject,这可能吗?

4

2 回答 2

3

正如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);
  }
});
于 2012-05-29T11:56:34.480 回答
3

你不需要做任何事情,当触发一个事件时,Event对象已经在那里了......

事件对象总是作为第一个参数传递给事件处理 程序
......

trigger文档

现场演示

于 2012-05-29T11:57:05.557 回答