如果我有以下JQuery:
$('#div1, #div2').scroll(function() { my_function($(this)); });
或
$('#div1, #div2').live('mouseover',function(){ my_function($(this)); });
$(this)
代表什么?
是DIV1还是DIV2的DOM对象?或者它是那个DIV的HTML?
上述代码中“this”代表什么?
答案 0 :(得分:8)
this
是触发事件的DOM元素,在本例中为#div1
或#div2
。
$(this)
是对jQuery的调用,用于将DOM元素包装在jQuery的包装器中,因此您可以在其上使用jQuery函数(例如.text()
,.bind()
,.load()
)
答案 1 :(得分:2)
this
表示触发事件的DOM元素,#div1
或#div2
。
答案 2 :(得分:2)
this
将是触发事件的DOM元素(如果您将鼠标悬停在#div1
上,则#div1
,...)
答案 3 :(得分:2)
查看jQuery文档的这一部分:
http://api.jquery.com/jQuery/#using-dom-elements
在任何jQuery回调函数的上下文中,this
被设置为由该函数操作的DOM元素。在您的情况下,回调函数对您的选择器指定的两个DOM元素之一进行操作,#div1
或#div2
。
正如lonesomeday所指出的,为了在元素上使用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对象。请注意:)