我经常看到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等),包装器是必需的.
'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)
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
| 归档时间: |
|
| 查看次数: |
2538 次 |
| 最近记录: |