3

在这段代码中:

    $(function() {
        $("div").click(function() {
            $(this).before("<p>Hi</p>");

        });
    });

“这”实际上指的是什么?它是指整个 div 列表,还是仅指单击的特定一个?我怎么知道?

另外,如果我在this没有 jQuery 符号的情况下编写或者它们是否相同,这有关系吗?

4

8 回答 8

5

在点击处理程序中,this是对触发事件的单个 DOM 元素的引用——在本例中是 div 元素。通过包装它,$()您可以创建对该 div 元素的 jQuery 引用(一个包含该单个元素的 jQuery 对象,允许您在其上调用 jQuery 方法。

$(function() {
    $("div").click(function() {
        $(this).before("<p>Hi</p>"); // 'this' is an HTMLDivElement

    });
});
于 2013-04-24T11:16:14.877 回答
3

this 是 DOM 对象,而 $(this) 是相同的 jQuery 包装器。

使用它时,您可以在其上调用 DOM 方法,但不能调用 jQuery 方法。使用 $(this) 时,您可以在其上调用 jQuery 方法,但不能调用 DOM 方法。

于 2013-04-24T11:16:54.077 回答
2

this只是一个参考。该语言将其读取为包含当前最活跃的元素。

它可以在整个代码中使用,以使许多任务能够采用一系列依赖于当前会话的变量。

在许多面向对象的编程语言中,this(或 self)是一个关键字,可以在实例方法中使用,以引用当前正在执行的方法已被调用的对象。

看看这个。

于 2013-04-24T11:16:22.680 回答
2

this始终是您与之交互的特定 DOM 节点,而它$(this)是同一个 DOM 节点,但包装在一个 jQuery 对象中。

不同之处在于它this可以与普通的 JavaScript/DOM API 一起使用(并且$(this)不能),而如果您需要使用 jQuery 方法(hide()show()等...),那么您将需要使用$(this)(而不是this)。

于 2013-04-24T11:16:18.447 回答
1

$(this)指的是从您附加事件处理程序的选择器创建的 jQuery 对象。div执行事件的任何元素都将this与从 jQuery 对象创建的添加的属性和方法一起变为

于 2013-04-24T11:16:49.603 回答
0

使用 jQuery与在 Javascript$(this)[0]中使用相同。this

所以$(this)[0] == this

于 2013-04-24T11:18:10.530 回答
0

复制自Nick Craver 的回答

  • this- 指您当前所在的处理程序中的 DOM 元素,但在其他情况下,这可能完全是另一个对象,但它始终是上下文。

  • $this- 通常由var $this = $(this)jQuery 包装版本的缓存版本创建以提高效率(或$(this)在许多情况下链接以获得相同的效果)。

  • $(this)- 元素的 jQuery 包装版本,因此您可以访问它的所有方法(在 中的方法$.fn specifically)。

于 2013-04-24T11:18:14.250 回答
0

在这种情况下,this指的是您单击的特定 HTML 元素。

不,你需要在 '$' 之前加上 '$' 符号(this),否则会导致 JavaScript 错误。

于 2013-04-24T11:14:51.090 回答