jQuery日本語リファレンス

jQuery does not mean Japanese Query...

Events/API/jQuery

trigger(type, [data])

各要素の指定されたイベントを実行します。

この関数を実行すると、指定されたイベントそのものの動作と、登録されたイベントハンドラの呼び出しを共に行います。例えば”submit”を呼び出した場合、そのformのsubmit処理が実際に実行されます。この動作は例で言えばsubmitボタンが押された場合と全く同じで、コールバック関数内の戻り値にfalseを返すなどの処理でキャンセルすることも可能です。

デフォルトで存在するイベントだけでなく、bindで登録したカスタムイベントなども呼び出すことが出来ます。

イベントハンドラは、標準化されたイベントオブジェクトを受け取ることができます。ただし、これはブラウザによる独自のプロパティ(keyCode、pageX、pageYなど)は保持していません。

また、jQueryはNamespaced Events (名前空間付きイベント)を実装しています。
これにより、triggerやunbindをまとまった単位で処理することができるようになりました。

イベント名の末尾に「!」を付けると、名前空間を持っていないハンドラだけを指定することになります。

jQuery 1.3からは、イベントがDOMツリーをbubble upするようになりました。
例えばドキュメント内に次のような階層があった場合、
<html><body>
<h1>title</h1>
<div>
<p>abc<span>xyz</span></p>
</div>
</body></html>
xyzをクリックすれば、まずイベントは当然ながらspan要素で発生します。その後、ツリーを親の方に辿ってp、divとクリックイベントを発生させていきます。(h1は親子関係が無いので、発生しません)
abcをクリックした場合も同様ですが、spanタグにあるxyzは子要素なので、バブリングは伝播しません。
この処理を止めるには、イベントハンドラ内でjQuery.Eventオブジェクトを使い、stopPropagation()関数でバブリングを中断してやります。

jQueryのイベントオブジェクトは公開され、開発者が独自のオブジェクトを作ることが出来るようになりました。
イベントオブジェクトの詳細については、jQuery.Eventを参照して下さい。
サンプル
サンプル1
submit()関数を呼び出すわけではなく、実際にsubmitの動作を実行します。
<form><input type="text" name="test" /></form>
$("form:first").trigger("submit")
サンプル2
引数でイベントハンドラに値を渡します。
$("p").click( function (event, a, b) {
  // 普通にp要素がクリックされた場合、aとbには何も渡されないのでundefinedになります。
  // 以下の例にあるようにtriggerを用いて引数で渡すと、aには"foo"、bには"bar"が入ってきます。
} ).trigger("click", ["foo", "bar"]);
サンプル3
ボタン#1が押された場合、クリック回数をインクリメントしていきます。
ボタン#2が押された場合は、ボタン2のクリック回数をインクリメントすると共に、ボタン#1のクリックイベントを呼び出します。
<button>Button #1</button>
<button>Button #2</button>
<div><span>0</span> button #1 clicks.</div>
<div><span>0</span> button #2 clicks.</div>
$("button:first").click(function () {
  update($("span:first"));
});
$("button:last").click(function () {
  $("button:first").trigger('click');
  update($("span:last"));
});
function update(j) {
  var n = parseInt(j.text(), 0);
  j.text(n + 1);
}
[全コードを表示] [実行結果を単体で表示]