jquery this 与 $(this) 甚至 $this

2024-02-26

我经常看到使用关键字的例子this在 jquery.有时我看到它与 $ 和括号一起使用,有时则不使用。我想我看到它与每种都使用了一点。

So,

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

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

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

这些都一样吗?有优选的方式吗?是this一个 javascript 的东西和$(this)一个 jQuery 的东西?如果是的话,在哪里$this fall?

我知道这可能是一个完全新手的问题,但我无法得到简单的,this,独自工作。我只能得到$(this)上班。我不确定我是否做错了什么,或者我是否一直在阅读有拼写错误的示例。


this是 JavaScript 的事情。它指的是函数正在运行的“上下文”。对于大多数事件处理程序来说,它是正在侦听事件的(“原始”)DOM 元素。在其他情况下,它会意味着其他事情;谷歌搜索“this在 JavaScript 中”可能会有所启发。


我说它是“原始”DOM 元素,因为 jQuery 经常用于wrapjQuery 包装器中的纯 DOM 元素,因此您可以使用 jQuery 方法,例如attr而不是通常的(getAttribute, setAttribute, ETC。)。这种包装是通过以下方式完成的$函数,这就是你看到的地方$(this)。例如:

this.getAttribute("href")
/* or */ someElement.getAttribute("href")

是相同的

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

$this or this$只是一个变量名。但是,通常做这样的作业是很常见的

var $this = $(this);

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


在极少数情况下,this可能已经是一个 jQuery 包装器。我经常遇到的情况是编写 jQuery 插件时。在这种情况下你可以做类似的事情this.attr("id")直接,不用先包起来,因为它已经包好了。在通常情况下(事件处理程序,$.each等)包装是必要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery this 与 $(this) 甚至 $this 的相关文章

随机推荐