我做了一点谷歌搜索,我找不到有关$(this)
的更多信息。我觉得有点傻,但我想知道它究竟是如何运作的。我想我读到它将元素变成了一个对象,但是我找不到关于它的更多信息。如果有人能提供资源,那就太好了。
我实际上是想了解我之前提到的这个问题:How can I fade only 1 div on mouseover when the classes applies to 5 other divs?
我只想彻底解释发生了什么,为什么它起作用$(this)
。
答案 0 :(得分:2)
this
是JS的一项特殊工作。它代表着“我目前所处的背景”。因此,在您的示例中,this
引用了特定的 div,其中包含当前鼠标悬停在其上的测试类(哇,令人困惑......见下文)。 $()是一个对象的包装器,它直接返回一个jQuery对象而不是元素。
所以,
$("div.test").mouseenter
分配一个监听器,以便当鼠标进入div时会触发this
指的是输入的特定div。$()
总是返回一个jQuery扩充版本的内容。答案 1 :(得分:1)
this
谈论所有者。所以在你之前的问题中,你有
$(".test").mouseenter(function() {
$(this).fadeOut("slow");
}).mouseleave(function() {
$(this).fadeIn("slow");
});
为什么this
有效是因为你可以把它想象成一个指向调用函数的特定对象的指针。当string
作为选择器时,它将匹配该选择器的每个元素。但是this
唯一地指向一个对象。然后当你在它周围添加$()
时,它会选择调用该事件的SPECIFIC对象。
我会看一下this一篇好文章。
答案 2 :(得分:1)
我只想彻底解释发生了什么,为什么它起作用
$(this)
。
你走了。
JavaScript中的函数在上下文中称为 。事实上,它们是独立的,只与它们所属的对象松散耦合。完全可以在对象A的上下文中调用“属于”对象B 的函数,因为它最初可能会令人困惑。
this
关键字传输函数调用的上下文。它包含在上调用函数的对象。
function test() {
alert(this);
}
// when called in a browser, this will alert "DOMWindow"
当没有给出特殊的上下文时,全局上下文(以window
对象的形式,当涉及到浏览器中的JavaScript时)是默认的。
var x = [1, 2, 3, 4];
function test2() {
alert(this.push);
}
// this will alert "undefined"
// (as there is no "push" property on the window object)
但正如我所说,你可以改变调用函数的 context 。执行此操作的函数恰当地命名为call()
并接受一个确定{{{0}含义的参数。 1}}在函数体中:
this
现在,这非常有用,jQuery做了很多:
test2.call(x);
// this will alert "function push() { [native code] }"
// (as the "push" property on x happens to be a function)
当click事件发生时,你给出的回调函数由jQuery调用,如
$(".test"); // returns an array of elements of CSS class "test"
$(".test").click( // binds a callback for the "click" event on all of them
function () {
// note how there is no context given for the callback function
alert(this);
}
);
而且,奇怪的是,callback.call(affectedDOMElement)
关键字在回调函数体中具有有用的含义。
答案 3 :(得分:0)
“this
”是一个令人困惑的javascript,这是一个深入的讨论:http://alebelcor.blogspot.com/2011/07/this-keyword-in-javascript.html
在您的其他帖子的上下文中,this
只是指您点击的元素。通过使用this
作为参数调用$()函数,您只需获取所单击元素的jQuery-fied对象。
答案 4 :(得分:0)
this
通常是指被操作的DOM元素。
例如:
$('a.foobar').click(function() {
alert(this.href);
});
通过将this
包装在$(...)
中,您将其转换为引用(在示例中)所单击链接的jQuery对象。