如果this()选择器在函数内部使用,它将引用哪个选择器(jQuery)?

时间:2011-08-31 16:18:05

标签: javascript jquery function css-selectors

例如我有一个功能:

function somefunction () {
    $('someselector').fadeOut('slow', function() { $(this).remove; });
}

然后在以下内容中调用此函数:

$('someselector1').click(function() {
     somefunction ();
});

$(this)内的somefunction()会引用someselector()还是someselector1()?据我了解,this()指的是触发事件的选择器,在本例中是someselector1。这是对的吗?

4 个答案:

答案 0 :(得分:3)

它将引用与someselector匹配的DOM元素。 this设置为fadeOut函数应用的元素。

this内的

someFunction(但不在fadeOut的回调函数内)将是对window对象的引用。

function somefunction () {
    // "this", unless specifically set, will refer to "window"
    $('someselector').fadeOut('slow', function() { 
        // "this" refers to the element that just finished fading out.
        $(this).remove; 
    });
}

示例: http://jsfiddle.net/9ubgH/

答案 1 :(得分:1)

请注意,$(this)语法没有什么神奇之处 - 它只需要this个点,并将其提供给(重度过载)主jQuery入口点,jQuery的用途完全取决于在什么样的事情上。特别是,JQuery 不知道你从this得到了它的论据。

这是相关的,因为在函数中并没有告诉你关于this将是什么的任何事情 - 这取决于函数的调用者,或多或少,来决定。在您的情况下,该函数恰好从将this设置为可预测的代码调用,但这不是您可以假设函数的一般

答案 2 :(得分:0)

它将引用someselector

$('someselector').fadeOut('slow', function() { $(this).remove; });

在上面fadeOut回调this将指向它正在消失的元素,因此this将指向someselector

答案 3 :(得分:0)

在这种情况下,这将引用“someselector”。

检查这个小提琴http://jsfiddle.net/6gdnw/