2016-05-30 4 views
0

は、私がように、ユーザの入力に基づいて、実行時のイベントハンドラを作成しています:あなたが見たよう複数のパラメータが渡されたJavascriptイベントハンドラを手動で起動するにはどうすればよいですか? JavaScriptアプリケーションで

$("#someElement").on("click", function(e){ 
    someFunction(e, param1, param2, param3); 
}); 

、someFunctionはでご利用いただけます(イベント・オブジェクトを超えた)追加のパラメータを取り込みイベントハンドラが作成される時刻。

このイベントハンドラは、作成された名前空間の外部から手動でどのようにトリガーできますか?私は "ダミー"イベントオブジェクトを作成し、試しました:

$("#someElement").trigger("click", [dummyEventObj]); 

しかし、それは動作しませんでした。 someFunctionが呼び出されますが、param1、param2、およびparam3は存在しません。何か案は?

+0

ハンドラを初期化するときに 'paramN'変数が利用可能な場合は、' click'イベントが発生したときにそれらの変数を利用可能にする必要があります。より高い範囲に 'paramN'変数はありませんか? – MinusFour

+0

'someElement'がクリックされたときにグローバルコンテキストに' param1、param2、param3'を格納することができます。後でそれを使用してトリガー関数に渡すことができます。それがそれを行う一つの方法です。この方法で依然としてバインドしたい場合は –

答えて

0

イベントハンドラ関数someFunctionが手動イベントトリガを正しく処理するためにいくつかの追加ロジックが必要であるという問題が発生したことがわかりました。関数処理の部分にロジックを追加する代わりに、navbuttonというカスタムイベントを作成し、そのカスタムイベントのロジックをsomeFunctionに追加しました。その後、ユーザー入力に基づいてカスタムイベントの手動トリガーをセットアップしました。だから、Minus4ourは自分のコメントで正しいです:someFunctionに渡されたパラメータは、常に初期化されていました...それは、手動トリガを正しく処理するためのロジックが正しくないということでした。

+0

あなたの問題を把握して動作させることができてうれしいです!よくやった!将来のスタッカー向けに更新されたコードを追加することをお勧めしますか? –

+0

基本的には、私がしたのは、 'click'イベントハンドラと同じ特別なパラメータを取るカスタムイベントハンドラを作成することでした: –

+0

@RichardBarkerカスタムイベントハンドラ' navutton'を作成しました。 'click'イベントハンドラ:' $( 'someElement').on( 'navbutton'、function(e){someFunction(e、param1、param2、param3);}); '次に、' someFunction'では、 'e.type'から通常得ることができるイベントタイプに基づいて異なるロジックを適用する' switch'ステートメントです。手動でトリガするカスタムイベントについては、イベントオブジェクトを 'var myEvent = {}'として作成し、 'myEvent.type = 'navbutton'を割り当てます。私はjQueryトリガfuncでmyEventを渡すだけです。 –

関連する問題