我经常会看到在
jquery中使用关键字this的例子.有时我看到它与$和括号一起使用,其他时候没有.我以为我看到它与每一个都使用了.
所以,
var id = this.attr('id'); var id = $(this).attr('id'); var id = $this.attr('id');
这些都一样吗?有优先的方式吗?这是一个JavaScript的东西和$(这)一个jQuery的东西?如果是这样,这个秋天在哪里?
我知道这可能是一个全新的问题,但是我还没有得到简单的,这本身就是工作.我只能得到$(这)工作.我不知道我是否做错了事情,或者如果我一直在读错误的例子.
解决方法
这是一个JavaScript的东西.它指的是一个函数正在运行的“上下文”.对于大多数事件处理程序,它是正在侦听事件的(“raw”)DOM元素.在其他情况下,这意味着其他的东西; Googling“这在JavaScript”可能是启发.
我说这是“原始”DOM元素,因为jQuery通常用于在jQuery包装器中包装纯DOM元素,因此您可以使用像attr这样的jQuery方法,而不是常用的(getAttribute,setAttribute等).这个包装是用$函数完成的,那就是你看到$(this)的地方.例如:
this.getAttribute("href") /* or */ someElement.getAttribute("href")
是相同的
$(this).attr("href") /* or */ $(someElement).attr("href")
$this或$$只是一个变量名.但是,常常做一个任务
var $this = $(this);
这样做的原因是为了避免不断地调用$函数,这样做有点贵,因为它每次都创建一个新的jQuery包装器对象.如果将包装的元素存储在变量中,则效率稍微提高.
在极少数情况下,这可能已经是一个jQuery包装器.经常出现在我身上的情况是在编写jQuery插件时.在这种情况下,您可以直接执行像this.attr(“id”)这样的事情,而不是首先包装它,因为它已经被包装了.在通常情况下(事件处理程序,$.each等),包装器是必需的.