jQuery“this”和元素集合

时间:2013-04-24 11:14:04

标签: jquery this

在这段代码中:

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

        });
    });

这个'实际上指的是什么? 它是指整个div的列表,还是仅仅针对特定的div?我怎么知道?

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

8 个答案:

答案 0 :(得分:5)

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

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

    });
});

答案 1 :(得分:3)

这是DOM对象,而$(this)是围绕它的jQuery包装器。

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

答案 2 :(得分:2)

this始终是您正在与之交互的特定DOM节点,其中$(this)是相同的DOM节点,但包含在jQuery对象中。

区别在于this可以与普通的JavaScript / DOM API一起使用($(this)不能),而如果你需要使用jQuery方法(hide(),{{1等等...),然后你需要使用show()(而不是$(this))。

答案 3 :(得分:2)

this只是一个参考。该语言将其视为接收当前最活跃的元素。

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

  

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

take a look at this.

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

Nick Craver's answer复制:

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

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

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

  •