2011-08-01 8 views

答えて

2

すべてのイベントをプログラムで起動することができます。コールバックレスのバージョンを使用してください。

例: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);

0

イベントをプログラムでトリガーできます。しかし、プログラムのトリガを使用して自然イベントとしてイベントのほとんどをシミュレートすることはできません。

//

$("buttonSelector").trigger("click"); 
0

まず、明白な理由のために、あなたはreadyイベントをトリガすることはできません]ボタンをクリックしてイベントをトリガします。

つまり、trigger()で発生したイベントは、ユーザーによってトリガーされた場合と同じように動作します。特に、イベントハンドラは同じ順序で呼び出されます。

私が知っている唯一の違いは、トリガされたイベントが古いバージョンのjQuery(バージョン1.3で修正された)でDOMツリーをバブルアップしなかったことです。

1

jQueryのtriggertriggerHandlerの違いを知っておく必要があります。それができるように最善としての自然イベントを複製する

トリガー

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/