9

jQueryでは、クリックなどのイベントをトリガーするより良い方法は何ですか? 関数を使用する.trigger('click')か、呼び出し.click()ますか?

私は常に使用してこのイベントをトリガーしていましたが、突然、代わり.click()に使用する必要があると判断しました。.trigger('click')

これらのイベント トリガーを使用して、 で作成されたイベント リスナーをトリガーし.on('click', function(){...})ます。

私はjquery apiをチェックし、他のスタックオーバーフローの投稿[1] [2]を検索しましたが、どちらか一方を使用する理由がわかりません。

.trigger()これは、カスタム イベントを含む任意のイベントを呼び出すために使用できるため、すべてのイベント トリガーの一貫性を維持するために使用する傾向があります。しかし.trigger()、すべての場合に機能するとは限りません。

イベントをトリガーする最良の方法は何ですか? .trigger('click')または.click()

4

2 に答える 2

10

使用し.trigger()ている場合は、追加のパラメーターを渡すことができるという利点がありますが、パラメーター.click()なしで呼び出す必要があります。

ドキュメントから取得:

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

'Custom'とはそれぞれおよび'Event'としてイベント ハンドラーに渡されます。param1param2

その.click()上、引数の数に基づいて get / set を実装する他の関数とは異なり、代わりにトリガー / セットを実装するためです。私にとっては、専用.trigger()の を使用する方がより論理的です。

于 2012-11-22T02:18:44.043 に答える
8

jQuery メソッドを使用する際に注意すべき点は、jQuery メソッドであることに加えて、要素などの HTML 要素で呼び出すことができる.click()DOM レベル 2ネイティブ JavaScript メソッド<button>でもあるということです。

これが混乱を招く可能性のある場所の 1 つは、次のようなセレクターがある場合です。

$("#element")[0].click();

そこでは、実際に DOM 要素でメソッドを呼び出しています。たとえば、試した場合

$("#element")[0].trigger('click');

trigger要素にメソッドが定義されていないというエラーが発生します。

$('#element')[0].click();特定の要素では、Safari では機能しないことに注意してください。回避策を使用する必要があります。

于 2014-02-20T16:06:48.303 に答える