[解決済み] jQueryのイベントハンドラに引数を渡すにはどうしたらよいですか?
質問
のようなjQueryのコードで。
$("#myid").click(myfunction);
function myfunction(arg1, arg2) {/* something */}
に引数を渡すにはどうしたらよいでしょうか?
myfunction
に引数を渡すにはどうしたらよいでしょうか?
どのように解決するのですか?
最も簡単な方法は、次のようにすることです(関数に渡されるイベント情報は一切必要ないと仮定しています)...
$("#myid").click(function() {
myfunction(arg1, arg2);
});
jsFiddle .
これは無名関数を作成するものです。
click
イベントが発生したときに呼び出されます。これは、順番に
myfunction()
を引数として呼び出します。
を維持したい場合は
ThisBinding
(の値)。
this
の値で、イベントを引き起こした要素に設定されます)、そして、関数を
call()
.
$("#myid").click(function() {
myfunction.call(this, arg1, arg2);
});
jsFiddle .
あなたの例にあるような方法で直接参照を渡すことはできませんし、その単一の引数は
jQuery
event
オブジェクトになります。
.
もし、あなたが
する
に参照を渡したい場合は、jQueryの
proxy()
関数 (これは
Function.prototype.bind()
). これにより、引数を渡すことができ、引数はバインドされている
の前に
の前にバインドされます。
event
引数の前にあります。
$("#myid").click($.proxy(myfunction, null, arg1, arg2));
jsFiddle .
この例では
myfunction()
が実行され、その
ThisBinding
がそのまま実行されます (
null
はオブジェクトではないので、通常の
this
の値が使われます)、そして引数(順番に)
arg1
,
arg2
で、最後にjQueryの
event
オブジェクトがありますが、これは必要なければ無視してもかまいません (関数の引数で名前を付けることさえしません)。
また、jQueryの
event
オブジェクトの
data
を使ってデータを渡すことができますが、そのためには
myfunction()
を介してアクセスするために
event.data.arg1
(を介してアクセスすることができます(これは
関数の引数
を使用するか、少なくとも前者の例のように手動でプロキシ関数を導入するか、後者の例のように生成されたものを使用します。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] パラメータを持つ関数をパラメータとして渡す?
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] 変異を伴わないオブジェクトからの値の削除
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ