jQueryを使用してプログラムですべてのイベントをトリガーできますか?また、jQueryを使用してイベントトリガを実行しているときに自然な方法でトリガされているときには、重要な違いがあります。jQueryはプログラムによってイベントをトリガーします
答えて
すべてのイベントをプログラムで起動することができます。コールバックレスのバージョンを使用してください。
例:2つ目の質問について
$('#button').click(function() { alert('event hanlder'); });
$('#button').click(); // generate the event
、ネイティブとjQueryのイベントハンドラに違いはありません。
$('#button').click(function() { alert(this); }); // here 'this' == document.getElementById('button');
警告:しかしきちんとしている
一つは、jQueryのコールバック(これはネイティブのイベントハンドラでは発生しません)の内側に、イベントを受け取った要素にthis
を結合することです。 this
によって参照される要素は、「jQueryが拡張されていません」。 jQueryの良さでトラバースや修正をしたい場合は、var $this = $(this);
イベントをプログラムでトリガーできます。しかし、プログラムのトリガを使用して自然イベントとしてイベントのほとんどをシミュレートすることはできません。
//
$("buttonSelector").trigger("click");
jQueryのtrigger
とtriggerHandler
の違いを知っておく必要があります。それができるように最善としての自然イベントを複製する
トリガー
trigger
試み。トリガされるイベントのイベントハンドラは実行されますが、デフォルトのブラウザアクションは必ずしも正確に複製されるとは限りません。たとえば$('a#link).trigger('click');
は、リンクclick
イベントハンドラにバインドされたjavascript関数を実行しますが、通常のクリックのようにアンカーのhref
にブラウザをリダイレクトしません。 EX:
trigger
のすべての短い形式は、正確にtrigger
IEのように動作します。 (EXをバブリングclick()
、mouseup()
、keydown()
など
triggerHandler
triggerHandler
防止します。http://jsfiddle.net/LmqsS/)、デフォルトのブラウザ動作を回避し、イベントコールバックを実行するだけで、連鎖するjqueryオブジェクトの代わりにイベントハンドラの戻り値を返します。
またtrigger
は、セレクタにマッチしたすべての要素に影響しますが、triggerHandler
は最初の1つのEX影響することに注意する必要があります。http://jsfiddle.net/jvnyS/