0

匿名のイベント処理関数を定義せずに、メソッドthis内で選択した要素(イベントソース)を指す方法を知りたいです。.on()

たとえば、次のコードでは、選択した要素のコンテキストはdocument、つまり、次の$(this)ように解釈されます。document

$('.nav-item').click(MyFrameworkUtils.navigationBinding($(this), 'arg1', 'arg2'))

ただし、匿名のイベントハンドラーでラップされている場合は、$(this)(望ましくは)選択された要素として解釈されます。

$('.nav-item').click(function(){
    var source = $(this);
    MyFrameworkUtils.navigationBinding(source, 'arg1', 'arg2');
});
4

2 に答える 2

6

次の構文を使用できます。

$('.nav-item').click({arg1:'arg1', arg2:'arg2'}, MyFrameworkUtils.navigationBinding)

関数は次のようになります。

function navigationBinding(event) {
    var source = $(this);
    var arg1 = event.data.arg1;
    var arg2 = event.data.arg2;
}
于 2013-01-24T11:24:22.320 に答える
1

MyFrameworkUtils.navigationBinding($(this), 'arg1', 'arg2')最初の例では、結果をメソッドに渡していますclick。したがって、コンテキストthisは外側のスコープであり、これはdocumentあなたの場合です。

ただし、2 番目の例では、スコープは内部関数であり、DOM によってトリガーされるほとんどのイベントと同様にthis、トリガー要素です。

さらに [おそらく関係ない] 関数を呼び出すときに、またはメソッドthisを使用して定義できることについては、「call と apply の違いは何ですか?」applycall

于 2013-01-24T11:19:07.010 に答える