例如我有一个功能:
function somefunction () {
$('someselector').fadeOut('slow', function() { $(this).remove; });
}
然后在以下内容中调用此函数:
$('someselector1').click(function() {
somefunction ();
});
$(this)
内的somefunction()
会引用someselector()
还是someselector1()
?据我了解,this()
指的是触发事件的选择器,在本例中是someselector1。这是对的吗?
答案 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;
});
}
答案 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/