在这段代码中:
$(function() {
$("div").click(function() {
$(this).before("<p>Hi</p>");
});
});
“这”实际上指的是什么?它是指整个 div 列表,还是仅指单击的特定一个?我怎么知道?
另外,如果我在this
没有 jQuery 符号的情况下编写或者它们是否相同,这有关系吗?
在点击处理程序中,this
是对触发事件的单个 DOM 元素的引用——在本例中是 div 元素。通过包装它,$()
您可以创建对该 div 元素的 jQuery 引用(一个包含该单个元素的 jQuery 对象,允许您在其上调用 jQuery 方法。
$(function() {
$("div").click(function() {
$(this).before("<p>Hi</p>"); // 'this' is an HTMLDivElement
});
});
this 是 DOM 对象,而 $(this) 是相同的 jQuery 包装器。
使用它时,您可以在其上调用 DOM 方法,但不能调用 jQuery 方法。使用 $(this) 时,您可以在其上调用 jQuery 方法,但不能调用 DOM 方法。
this
只是一个参考。该语言将其读取为包含当前最活跃的元素。
它可以在整个代码中使用,以使许多任务能够采用一系列依赖于当前会话的变量。
在许多面向对象的编程语言中,this(或 self)是一个关键字,可以在实例方法中使用,以引用当前正在执行的方法已被调用的对象。
this
始终是您与之交互的特定 DOM 节点,而它$(this)
是同一个 DOM 节点,但包装在一个 jQuery 对象中。
不同之处在于它this
可以与普通的 JavaScript/DOM API 一起使用(并且$(this)
不能),而如果您需要使用 jQuery 方法(hide()
、show()
等...),那么您将需要使用$(this)
(而不是this
)。
$(this)
指的是从您附加事件处理程序的选择器创建的 jQuery 对象。div
执行事件的任何元素都将this
与从 jQuery 对象创建的添加的属性和方法一起变为
使用 jQuery与在 Javascript$(this)[0]
中使用相同。this
所以$(this)[0] == this
。
复制自Nick Craver 的回答:
this
- 指您当前所在的处理程序中的 DOM 元素,但在其他情况下,这可能完全是另一个对象,但它始终是上下文。
$this
- 通常由var $this = $(this)
jQuery 包装版本的缓存版本创建以提高效率(或$(this)
在许多情况下链接以获得相同的效果)。
$(this)
- 元素的 jQuery 包装版本,因此您可以访问它的所有方法(在 中的方法$.fn specifically
)。
在这种情况下,this
指的是您单击的特定 HTML 元素。
不,你需要在 '$' 之前加上 '$' 符号(this)
,否则会导致 JavaScript 错误。