jQuery这个选择器

时间:2011-07-17 05:35:55

标签: jquery

我做了一点谷歌搜索,我找不到有关$(this)的更多信息。我觉得有点傻,但我想知道它究竟是如何运作的。我想我读到它将元素变成了一个对象,但是我找不到关于它的更多信息。如果有人能提供资源,那就太好了。

我实际上是想了解我之前提到的这个问题:How can I fade only 1 div on mouseover when the classes applies to 5 other divs?

我只想彻底解释发生了什么,为什么它起作用$(this)

5 个答案:

答案 0 :(得分:2)

this是JS的一项特殊工作。它代表着“我目前所处的背景”。因此,在您的示例中,this引用了特定的 div,其中包含当前鼠标悬停在其上的测试类(哇,令人困惑......见下文)。 $()是一个对象的包装器,它直接返回一个jQuery对象而不是元素。

所以,

  1. $("div.test").mouseenter分配一个监听器,以便当鼠标进入div时会触发
  2. 该函数内的
  3. this指的是输入的特定div。
  4. $()总是返回一个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)

jQuery事件回调中的

this通常是指被操作的DOM元素。

例如:

$('a.foobar').click(function() {
    alert(this.href);
});

通过将this包装在$(...)中,您将其转换为引用(在示例中)所单击链接的jQuery对象。