0

私は自分の質問に対する答えをかなり探しましたが、まだ似たようなものは見つかりませんでした. 基本的に、イベントを受け入れ、通常はクリックまたはその他のイベントを介して要素にアタッチされる関数を呼び出したいのですが、代わりに直接呼び出すだけです。

本質的に、私は自分の関数 (jQuery で書かれた) を呼び出すためにこれを行うことができることを知っています:

function updateThisValue(event) {
    ...some code...
}

jQuery('#myElement').on('click', updateThisValue);

jQuery('#myElement').trigger('click');

代わりに、関数を直接呼び出す方法はありますか?

function updateThisValue(event) {
    ...some code...
}

updateThisValue(***jQuery event object here***);

コンテキストとして、Backbone を使用して Web ページのフォームを更新し、特定のイベントでそのメソッドの 1 つ (updateThisValue) を呼び出すように定義されたカスタム ビューを定義しました。同じビューの別のメソッド内で、「updateThisValue」メソッドを直接呼び出せるようにしたいと考えています。ただし、「updateThisValue」はそのコード内でイベント オブジェクトを使用します。したがって、メソッドを直接呼び出すと、エラーで失敗します。

これを行う方法はありますか?それとも、最初の I-know-I-can-do-it-this-way の例に従って、手動で (コードで) トリガーする必要がありますか? ハックのように感じるだけです。

ありがとう。

4

2 に答える 2

1

updateThisValuejQuery イベント オブジェクトがある場合にのみ、jQuery イベント オブジェクト呼び出すことができます。

だからあなたはこれを行うことができます:

var updateThisValue = function(e) {
 //...
}

//The below two pieces of code are equivalent.
$('#myelement').on('click',updateThisValue);

$('#myelement').on('click',function(e) {
   updateThisValue.apply(this,[e]);
});

.apply()2 番目のコード サンプルで使用し、直接実行しなかった唯一の理由は、関数内でupdateThisValue(e)への参照を使用する場合です(これは、そのイベントを処理したこの dom ノードを参照します)。inへの参照が必要ない場合は、次のように簡単に実行できます。thisupdateThisValuethisupdateThisValue

$('#myelement').on('click',function(e) {
   updateThisValue(e);
});
于 2013-10-30T18:13:59.727 に答える