2010-11-09 81 views
3

如果我有以下的JQuery:JQuery的:幫助與 「.live」 和 「.scroll」

$('#div1, #div2').scroll(function() { my_function($(this)); }); 

$('#div1, #div2').live('mouseover',function(){ my_function($(this)); }); 

是什麼$(this)代表什麼?

它是DIV1還是DIV2的DOM對象?或者它是該DIV的HTML?

「this」在上面的代碼中代表什麼?

回答

2

this表示觸發該事件的DOM元素,或者是#div1#div2

2

this將在該事件被解僱的DOM元素(#div1如果你將鼠標放置#div1,...)

8

this是該事件被觸發的DOM元素,在這種情況下#div1#div2

$(this)是jQuery的呼叫來包裝jQuery的包裝器的DOM元素,所以可以在其上使用jQuery功能(例如.text().bind(),​​)。

+0

+1因爲你實際上回答了這個問題。 – zzzzBov 2010-11-09 21:10:44

2

退房jQuery的文檔的本節:

http://api.jquery.com/jQuery/#using-dom-elements

在任何jQuery的回調函數的上下文中,this被設置爲由功能在其上操作的DOM元素。在你的情況下,回調函數在選擇器指定的兩個DOM元素中的一個上運行,或者#div1#div2

正如寂靜的日子所述,爲了在元素上使用jQuery操作,您需要將它包裝在jQuery對象中。那是$(this)是。它只是說「拿這個DOM元素並把它給我一個jQuery對象。」

請注意:使用this時常見的問題已改變。例如,如果你做到這一點:

$(function() { 
    $('#div1').click(function() { 
     var myThis1 = this; 
     $('.divs').each(function() { 
      var myThis2 = this; 
     }); 
    }); 
}); 

myThis1將是#div1 DOM對象,但你的電話.each()this變化的背景下里面。在每個循環中,myThis2將被設置爲divs類的某個元素的DOM對象。只是要注意:)

+0

對於我剛纔看到的奇妙答案+1。 – lonesomeday 2010-11-16 23:35:29