jQuery 中的 $(this) 和 this 有什么区别?
jQuery 中的 $(this)
和 this
之间有什么区别,为什么它们有时给出相同的结果,而有时却表现不同?
What's the difference between $(this)
and this
in jQuery, and why do they sometimes give the same result and other times behave differently?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
$(this)
用 jQuery 功能包装this
。例如,此代码将失败:
因此我们将
this
包装在 jQuery 中:$(this)
wrapsthis
with the jQuery functionality.For example, this code would fail:
So we wrap
this
in jQuery:$(this)
用 jQuery 函数修饰this
指向的任何对象。典型的用例是this
引用 DOM 元素(例如)。然后,编写
$(this)
允许您使用该上的所有 jQuery API 函数。
如果
this
已经引用了一个 jQuery 对象(通常是一个 jQuery 修饰的 DOM 对象),那么调用$(this)
将不起作用,因为它已经被修饰了。$(this)
decorates whatever objectthis
points to with the jQuery functions. The typical use case is forthis
to reference a DOM element (say, a<div>
). Then, writing$(this)
allows you to use all the jQuery API functions on that<div>
.If
this
already refers to a jQuery object - usually a jQuery-decorated DOM object - then calling$(this)
will have no effect because it's already decorated.如果在当前上下文中
this
不是 jQuery 对象,则可以通过将其包裹在$()
周围使其成为 jQuery 元素。当您的元素已经是 jQuery 表达式的结果时,在这种情况下this
已经是一个 jQuery 对象。所以在这种情况下它们的工作原理相似If in your current context if the
this
is not a jQuery object, you can make it a jQuery element by wrapping it around$()
. When your element already is a result of jQuery expression, thethis
in that case is already a jQuery object. So in that case they both work similarly为了让您更好地理解,请为自己准备一个调试器,例如 google chrome 并执行此操作..
这将向您展示其中的区别:)
for you to understand a little bit better, get yourself a debugger of somekind such as google chrome and do this..
this will show you what the difference is :)
this
是一个 JavaScript 变量,每当您处于附加到对象的函数内部时就会创建该变量。在这些情况下,this
引用该对象。$(this)
返回一个 jQuery 对象,您可以在其上调用 jQuery 函数,但仅适用于this
。例如,如果您为所有锚点设置一个单击处理程序:
则
this
指的是单击事件(函数)附加到的锚点。this
is a javascript variable created whenever you are inside a function which is attached to an object. In these cases,this
refers to that object.$(this)
returns a jQuery object which you can call jQuery functions on, but will apply only tothis
.For example, if you set a click handler for all anchors:
then the
this
, refers to the anchor, which the click event (function) is attached to.$(这个)==这个?有趣的。
这不能通过 DOM 事件传递。
$(this) == this ? interesting.
this must not pass by DOM event.
在 JavaScript 中,this 始终指正在执行的函数的“所有者”。使用 $(this) 只会包装所有者,以便所有 jQuery 操作都将被扩展并可供其使用。
考虑一下:
它们通常会给出相同的结果,因为所有者是相同的,只是当被 jQuery 包装时,它可以使用 jQuery 函数进行操作。
In JavaScript this always refers to the “owner” of the function that is executing. Using $(this) will only wrap the owner so that all the jQuery operations will be extended and available to it.
Consider:
They usually give the same results since the owner is the same, only that when wrapped by jQuery it can operate with the jQuery functions.