Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery this与$(this)甚至可能是$this_Javascript_Jquery - Fatal编程技术网

Javascript jquery this与$(this)甚至可能是$this

Javascript jquery this与$(this)甚至可能是$this,javascript,jquery,Javascript,Jquery,我经常看到在jquery中使用关键字this的例子。有时我看到它和$和括号一起使用,有时没有。我想我看到它和每一个都有一点配合使用 所以 这些都一样吗?有更好的方法吗?this是javascript的东西,而$(this)是jQuery的东西吗?如果是的话,$this落在哪里 我知道这可能是一个全新的问题,但我还没能让简单的,这个本身起作用。我只能让$(这个)工作。我不确定我是否做错了什么,或者我是否读过打字错误的示例。这是一个引用当前对象的本机Javascript对象。在用jQuery.fn.

我经常看到在jquery中使用关键字
this
的例子。有时我看到它和$和括号一起使用,有时没有。我想我看到它和每一个都有一点配合使用

所以

这些都一样吗?有更好的方法吗?
this
是javascript的东西,而
$(this)
是jQuery的东西吗?如果是的话,
$this
落在哪里


我知道这可能是一个全新的问题,但我还没能让简单的,
这个
本身起作用。我只能让
$(这个)
工作。我不确定我是否做错了什么,或者我是否读过打字错误的示例。

这是一个引用当前对象的本机Javascript对象。在用
jQuery.fn.
定义的jQuery函数中,
本身就是一个jQuery对象
$(this)
是jQuery将Javascript
this
转换为jQuery对象的方法。
$this
只是一个变量名。如果您尚未定义它,它将是
未定义的

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


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

$(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
    });
  });
});
this.getAttribute("href")
/* or */ someElement.getAttribute("href")

这是一个JavaScript的东西。它指的是运行函数的“上下文”。对于大多数事件处理程序,侦听事件的是(“原始”)DOM元素。在其他情况下,它将意味着其他事情;用JavaScript搜索“
这个
”可能会有所启发


我之所以说它是“原始”DOM元素,是因为jQuery通常用于在jQuery包装器中包装普通DOM元素,因此可以使用jQuery方法,如
attr
,而不是通常的方法(
getAttribute
setAttribute
,等等)。这个包装是通过
$
函数完成的,您可以在这里看到
$(This)
。例如:

$(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
    });
  });
});
this.getAttribute("href")
/* or */ someElement.getAttribute("href")

$(this).attr("href")
/* or */ $(someElement).attr("href")

$this
this$
只是一个变量名。但是,做这样的任务通常是常规的

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



在极少数情况下,
这个
可能已经是jQuery包装器了。我经常遇到的情况是在编写jQuery插件时。在这种情况下,您可以直接执行类似于
this.attr(“id”)
的操作,而无需首先包装它,因为它已经包装好了。在通常情况下(事件处理程序,
$。每个
等),包装器都是必要的。

与其多次调用
$(this)
,不如将其存储为变量,通常称为
$this
,以便人们知道它是什么

不仅仅用于事件处理程序,它是对当前对象的引用。这里有一个进一步的解释:“this”是一个js自引用,将$()放在jquery类中就可以了。什么是$this-它只是一个变量名(不是预定义的),通常在jquery插件中使用,只是为了始终从子类引用第一级父类是的,回答得很好。最后一部分有助于解释我在某个地方读到的东西,但我可以再次找到它。我看到使用了
这个.attr(“id”)
,但它对我不起作用。我想这是我最困惑的地方。你能解释一下你的答案吗,以说明普通
this
何时以及为什么会起作用在这种情况下使用普通“this”的唯一原因是如果你需要在原始DOM节点上访问一个方法或变量,比如这里:你将无法在普通DOM节点上使用jQuery方法“this”例如:this.hide();哦…我明白了。那么,可以安全地说,您在
上执行的任何“操作”都有可能不兼容跨浏览器吗?而将其包装在
$()
中并使用jQuery方法会更安全吗?更新您的答案以反映
的这些含义可能是件好事,因为OP想知道,对
执行任何操作都不会降低其合规性。将其包装在
$()
中只会提供jQuery为表带来的功能,他们非常小心地使其方法非常兼容跨浏览器。因此,使用
$(this)
实际上比
this
更不兼容跨浏览器,只有在jQuery团队遗漏了一些东西的情况下
$(this)
具有与
this
相同的方法以及jQuery对象的所有方法。OP对他在其他开发人员代码中看到的
$this
变量感到困惑,但该变量通常只是
$(this)
的缓存版本。