标题写的不够清楚,就是说在如下一段代码中
<scripttype='text/javascript>
$('div').each(function(){
$(this).html('fdsada');
//这个$(this)是什么?
})
</script>

以上一段代码中,其实直接使用this的HTML对象也是可以的:
<scripttype='text/javascript>
$('div').each(function(){
this.innerHTML='fdsada';
})
</script>


我在each的源代码中看到这样一段代码(有很多,我只挑我需要的写):
each:function(object,callback,args)
//这里的object就是当前jQuery对象里的this对象,假如说外面使用了$('div'),那么这里面包含了很多jQuery原对象和所有的DivHTMLOBJECT对象.
//那么function里面的处理回调函数的是这样一部分,针对我所举例的$('div')
vari=0;
for(;i<length;){
if(callback.call(object[i],i,object[i++])===false){
break;
}

可以看出来,使用callbackcall了object,也就是指向了jQuery内部的this,因为这在jQuery274行
each:function(callback,args){
returnjQuery.each(this,callback,args);
}

中调用. 注意(这是PS部分,熟悉JQUERY这个方法的看不看都无所谓):这个方法是jQuery.fn.each.而它调用的是:jQuery.each.两个不一样,一个是prototype中的方法,另一个不是.所以这里的THIS显然是经过选择器INIT之后的this,假设init了$('div'),假设页面上有3个DIV,这里面就会出现3个HTML.

这个callback,也就是我们
$('div').each(]function(){
//codes...
}
)

each中的FUNCTION,而for中的object[i]显然是具体的某个DIV对象,先被使用Array.prototype.slice将getElementsByTagName('div')无用的方法剪切掉,只留下其中的HTMLDIVOBJECT后又被它将这些结果加入了jQuery的this对象.
所以这里的callback.call(this[i],指的便是某个具体DIV对象,所以你可以在callback中使用
$('div').each(function(){
this.innerHTML='fasdfdsa'
})

来达到和
$('div').each(function(){
$(this).html('fdsafdsafdsa');
})

同样的效果.
所以,我也看了jQuery的html:function.
我就不详解了,很简单,其实就是用
this[0].innerHTML.

我这边说的可能比较粗,但看过jQuery源代码的人一定知道.
所以我的疑问就是,为什么在callback中
this对象等同于jQuery$(this)对象中的this[0],难道说callback.call(this[i]将它合并到第0个去了?那之前所选择的$('div')里面的所有HTMLOBJECT在哪里?

非常期望高人解惑!!!谢谢!!!

27 个解决方案

#1


是当前的元素!

更多相关文章

  1. jquery解析php通过ajax传过来的json二维数组对象
  2. jquery手指触摸滑动放大图片的方法(比较靠谱的方法)
  3. jquery 阻止表单提交方法
  4. 关于js 方法,实现ajax请求时,return false/true无效的问题
  5. 在jQuery Mobile中做$(document).ready的正确方法是什么?
  6. ie8下jQuery动画没有ie7流畅,是浏览器性能问题吗?有没有什么解决方
  7. 有什么方法可以让jQuery循环在到达终点或开始时不循环?
  8. js限制文本框只能输入数字方法
  9. 模拟JQuery的Ready方法实现并出现的问题

随机推荐

  1. SQL:ORDER BY`date`和START WHERE`value`
  2. MYSQL数据库的安装
  3. identity_insert和表初始化脚本
  4. sql语句中各子部分的执行顺序
  5. MySQL 中的函数(一:数学函数)
  6. 3、Oracle PL/SQL中Date格式及格式转换
  7. 浅谈mysql的备份
  8. 1.4.6 收集sql语句的执行计划 2
  9. Python MySQLdb连接数据库的应用
  10. Effective MySQL之深入解析复制技术