jQuery这个选择器

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

我实际上试图理解我之前问过的这个问题: 当类应用于其他5个div时,如何在mouseover上仅淡化1个div?

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

this是JS的一项特殊工作。 它代表“我目前所处的环境。” 所以,在你的例子中, this指的是具有当前鼠标hover在其上的测试类的特定 div(哇,令人困惑……见下文)。 $()是一个对象的包装器,它直接返回一个jQuery对象而不是元素。

所以,

  1. $("div.test").mouseenter指定一个监听器,以便当鼠标进入div时它会触发
  2. this函数内部是指输入的特定div。
  3. $()总是返回一个jQuery扩充版本的内容。

this谈到了老板。 所以在你之前的问题中,你有

 $(".test").mouseenter(function() { $(this).fadeOut("slow"); }).mouseleave(function() { $(this).fadeIn("slow"); }); 

为什么this做是因为你可以把它想象成一个指向调用函数的特定对象的指针。 当您将string作为选择器时,它将匹配该选择器的每个元素。 但这只能指向一个对象。 然后当你在它周围添加$()时,它将选择调用该事件的SPECIFIC对象。

我会看一下好文章。

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

干得好。

JavaScript中的函数在上下文中调用。 事实上,它们是独立的,只与它们所属的对象松散耦合。 完全可以对象A 的上下文中调用“属于”对象B的函数,因为它最初可能是混乱的。

this关键字传输函数调用的上下文。 它包含调用该函数的对象。

 function test() { alert(this); } // when called in a browser, this will alert "DOMWindow" 

当没有给出特殊的上下文时, 全局上下文(以window对象的forms,当涉及到浏览器中的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) 

但正如我所说,你可以改变调用函数的上下文 。执行该函数的函数恰当地命名为call()并接受一个参数,该函数确定函数体中的含义:

 test2.call(x); // this will alert "function push() { [native code] }" // (as the "push" property on x happens to be a function) 

现在,这非常有用,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); } ); 

当click事件发生时,你给出的回调函数就像这样由jQuery调用

 callback.call(affectedDOMElement) 

而且,奇怪的是, this关键字在回调函数体中具有有用的含义。

this ”是一个javascript的东西,可能会相当混乱,这是一个深入的讨论: http : //alebelcor.blogspot.com/2011/07/this-keyword-in-javascript.html

在您的其他post的上下文中, this只是指您单击的元素。 通过使用this作为参数调用$()函数,您只需获取所单击元素的jQuery-fied对象。

在jQuery事件中, this回调通常是指被操作的DOM元素。

例如:

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

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