jquery这对$(这个)甚至可能是$ this

Jef*_*ddy 9 javascript jquery

我经常看到this在jquery 中使用关键字的示例.有时我看到它与$和括号一起使用,有时没有.而且我以为我看到它与每个都用了一点.

所以,

 var id = this.attr('id');

 var id = $(this).attr('id');

 var id = $this.attr('id');
Run Code Online (Sandbox Code Playgroud)

这些都一样吗?有首选方式吗?是thisjavascript的东西和$(this)jQuery的东西?如果是这样,哪里$this下降?

我知道这可能是一个全新的问题,但我无法让简单的,this单独的,工作.我只能$(this)上班.我不确定我做错了什么,或者我是否一直在阅读错别字的例子.

Dom*_*nic 11

this是一个JavaScript的东西.它指的是函数运行的"上下文".对于大多数事件处理程序,它是正在侦听事件的("原始")DOM元素.在其他情况下,它将意味着其他事情; 谷歌搜索" this在JavaScript中"可能具有启发性.


我说这是"原始"的DOM元素因为jQuery常被用来包裹在一个jQuery包装纯DOM元素,所以你可以使用jQuery方法一样attr,而不是通常的人(getAttribute,setAttribute,等).这个包装是通过该$功能完成的,这就是你所看到的$(this).例如:

this.getAttribute("href")
/* or */ someElement.getAttribute("href")
Run Code Online (Sandbox Code Playgroud)

是相同的

$(this).attr("href")
/* or */ $(someElement).attr("href")
Run Code Online (Sandbox Code Playgroud)

$this或者this$只是一个变量名称.但是,通常做一个像

var $this = $(this);
Run Code Online (Sandbox Code Playgroud)

这样做的原因是为了避免不断调用$函数,这有点昂贵,因为它每次都会创建一个新的jQuery包装器对象.如果将包装的元素存储在变量中,则效率会略有提高.


在极少数情况下,this可能已经是一个jQuery包装器.经常出现的情况是编写jQuery插件时.在这种情况下,你可以this.attr("id")直接做一些事情,而不是先把它包起来,因为它已经被包裹了.在通常情况下(事件处理程序$.each等),包装器是必需的.


afr*_*ick 8

'this'是一个用于引用当前对象的Javascript对象关键字,'$(this)'是将当前对象转换为jQuery对象的jQuery包装函数,当你看到'$ this'时它通常引用一个变量开发人员创建的是为了引用$(this)对象,它在$ .each循环中很有用.例如:

$(function(){
  $('a').click(function(){
    var $this = $(this); // refers to the $('a') object
    $('div').each(function(){
      $(this).hide(); // $(this) refers to each 'div' in the loop, not the $('a')
      $this.css({ color: 'blue' }); // turns the link element text blue
    });
  });
});
Run Code Online (Sandbox Code Playgroud)


Thi*_*iff 5

this是一个本机Javascript对象,它引用当前对象.在使用jQuery函数定义时jQuery.fn.,this它本身就是一个jQuery对象.$(this)是jQuery将Javascript this转换为jQuery对象的方法.而且$this只是一个变量名称.如果你还没有定义它,那就是undefined.

以下是jQuery使用的一个很好的解释this:

http://www.learningjquery.com/2007/08/what-is-this