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

以下は、デフォルトのイベント オブジェクトの使用と独自の作成の両方の例です。ソース

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 に答える