JQuery:帮助“.live”和“.scroll”

时间:2010-11-09 20:50:37

标签: javascript jquery

如果我有以下JQuery:

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

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

$(this)代表什么?

是DIV1还是DIV2的DOM对象?或者它是那个DIV的HTML?

上述代码中“this”代表什么?

4 个答案:

答案 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对象。请注意:)