"$(this)" 和 "this" 有什么区别?

16

我正在阅读http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery,但对这两段代码中this的使用感到困惑。

     $(document).ready(function() {
        $("#orderedlist").find("li").each(function(i) {
        $(this).append( " BAM! " + i );
       });
     });

    $(document).ready(function() {
      // use this to reset several forms at once
       $("#reset").click(function() {
        $("form").each(function() {
         this.reset();
        });
     });
   });

我们何时需要使用$(this)this?它们之间有什么区别?谢谢。


3
可能是[“this”,“$ this”和“$(this)”之间的区别是什么?](https://dev59.com/mm865IYBdhLWcg3wSMkw)的重复问题。 - user113716
1
@patrick:我不认为这是重复的。值得回答的是,为什么在这段特定的代码中需要$(this),而在另一部分需要this - Blazemonger
1
@mblase75:嗯,我想我不同意。那个答案加上教程已经解释了这个问题,使它成为一个重复的问题。阅读其他问题的答案应该可以解决它。从教程中可以看到:“请注意,在.each()函数中,this指的是实际元素。” - user113716
...或者如果你不喜欢那个重复的,这里有一个引用了同一教程中相同代码的链接: https://dev59.com/D3NA5IYBdhLWcg3wNa-T - user113716
非常感谢您的快速回复。@patrick,放轻松。我正在努力学习,人们正在帮助我。您可能在某个阶段也会这样。 - gmail user
@gmail 用户:放轻松?这就是StackOverflow的运作方式。人们希望你在提问前先进行基本的研究,并搜索网站以查看问题是否已存在。这就是为什么在您创建帖子时StackOverflow会向您展示可能的重复问题。您应该通过这些搜索,查看问题是否已被问过并得到了答案。不要认为这是针对你个人的。 - user113716
5个回答

17

this 指代 DOM 元素本身;$(this) 将元素包装在 jQuery 对象中。

在第一个示例中,需要使用 $(this),因为 .append() 是 jQuery 方法。

在第二个示例中,reset() 是 JavaScript 方法,因此不需要 jQuery 包装。


7

this本身只是普通的对象。

$(this)this添加到jQuery包装器中,以便您可以使用jQuery方法来处理该对象。


3

this 指的是一个 DOM 对象。因此,reset() 是表单 DOM 对象的一个函数。另一方面,append() 是 jQuery 的一个方法,所以它必须由 jQuery 对象调用,因此需要使用 $(this)

当你在 this 周围加上 $ 时,你会得到一个代表该 DOM 对象的 jQuery 对象。


2
通常在jQuery中,this将是所讨论的DOM元素的一个实例,并且$(this)会建立一个jQuery对象,将this包裹起来,从而使您能够使用通常的jQuery方法,如each()val()

1

只有当您在同一行代码上跟随jQuery函数时,才需要使用 $(this)。

ex: $(this).find(...);    $(this).val();   etc

或者你只需要 this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接