.trigger()

要素に対し、指定したイベントタイプを実行させます。

本来のイベントを発生させずにjQueryを通してバインドさせたイベントだけを実行させたい場合は、 .triggerHandler()を使用してください。

.trigger( eventType [, extraParameters] ) 1.0追加

戻り値:jQuery

引数 説明
eventType 'click'や'submit'等のjavaScriptイベントの文字列を指定します。
[extraParameters] イベントハンドラに渡したいデータを指定します。
$('#foo').bind('click', function() {
  alert($(this).text());
});
$('#foo').trigger('click');

下記のように、.trigger()の2つ目に指定した配列データをイベントに渡すことができます。 jquery1.6.2以降、配列ではない単一の値も指定することが可能です。

$('#foo').bind('custom', function(event, param1, param2) {
  alert(param1 + "
" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);

.trigger( event ) 1.3追加

戻り値:jQuery

引数 説明
event jQueryのEventオブジェクトを指定します。
var event = jQuery.Event("submit");
$("form:first").trigger(event);
if ( event.isDefaultPrevented() ) {
  // Perform an action...
}

サンプル

$("p").click( function (event, a, b) {
  // 通常のクリックでは、aとbはundefinedですが、下記のように
  // triggerを使用すれば、"foo"と"bar"の値を渡すことが出来ます。
} ).trigger("click", ["foo", "bar"]);

eventオブジェクトを通して、任意のデータを渡しています。

var event = jQuery.Event("logged");
event.user = "foo";
event.pass = "bar";
$("body").trigger(event);

次のようにしてデータを渡すことも可能です。

$("body").trigger({
  type:"logged",
  user:"foo",
  pass:"bar"
});

デモ

ボタン#2はボタン#1に対してのtrigger処理も行なっています。

<!DOCTYPE html>
<html>
<head>
<style>
  button { margin:10px; }
  div { color:blue; font-weight:bold; }
  span { color:red; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<button>ボタン #1</button>
<button>ボタン #2</button>
<div><span>0</span> ボタン #1 クリック</div>
<div><span>0</span> ボタン #2 クリック</div>
<script>
  $("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(), 10);
    j.text(n + 1);
  }
</script>
</body>
</html>

submit処理が実行されない現象について

id属性やname属性に特定の名前を付けると、submit処理が実行されないという現象があるようです。下記リンク先が参考になります。

 Back to top

© 2010 - 2017 STUDIO KINGDOM