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