jQuery这个选择器
我做了一点谷歌搜索,我找不到有关$(this)
更多信息。 我觉得有点傻,但我想知道它究竟是如何起作用的。 我想我读过它把元素变成了一个对象,但是我找不到关于它的更多信息。 如果有人能提供资源,那就太好了。
我实际上试图理解我之前问过的这个问题: 当类应用于其他5个div时,如何在mouseover上仅淡化1个div?
我只想彻底解释发生了什么,为什么它起作用$(this)
。
this
是JS的一项特殊工作。 它代表“我目前所处的环境。” 所以,在你的例子中, this
指的是具有当前鼠标hover在其上的测试类的特定 div(哇,令人困惑……见下文)。 $()是一个对象的包装器,它直接返回一个jQuery对象而不是元素。
所以,
-
$("div.test").mouseenter
指定一个监听器,以便当鼠标进入div时它会触发 -
this
函数内部是指输入的特定div。 -
$()
总是返回一个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对象。