2013-01-24 96 views
0

我想知道如何在不定義匿名事件處理函數的情況下將this指向.on()方法中的選定元素(事件源)。「this」.on()函數的上下文jQuery

例如,在代碼波紋管,對於我所選擇的元素的上下文是document,即$(this)被解釋爲document

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

然而,如果包裹在一個匿名事件處理程序,$(this)被解釋(理想)作爲選定的元素。

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

回答

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; 
} 
+0

謝謝。很漂亮。 –

1

在你的第一個例子中,要傳遞的MyFrameworkUtils.navigationBinding($(this), 'arg1', 'arg2')結果到您的click方法。 this的上下文因此是上下文是外部範圍,這是您的案例中的document

在第二示例然而範圍內的功能,和與由DOM觸發大多數事件,this是觸發元件。

另外[可能無關],調用函數時,你可以通過使用applycall方法定義this,如What is the difference between call and apply?

+0

Thanksssss。它有很大的意義..好吧,Javascript的意義。並感謝您建議的應用和通話功能。 –