jquery 的 each , click , 中 $(this) 是指什么?在线等 , 希望高手解答 !!
16lz
2021-01-22
标题写的不够清楚,就是说在如下一段代码中
以上一段代码中,其实直接使用this的HTML对象也是可以的:
我在each的源代码中看到这样一段代码(有很多,我只挑我需要的写):
可以看出来,使用callbackcall了object,也就是指向了jQuery内部的this,因为这在jQuery274行
中调用. 注意(这是PS部分,熟悉JQUERY这个方法的看不看都无所谓):这个方法是jQuery.fn.each.而它调用的是:jQuery.each.两个不一样,一个是prototype中的方法,另一个不是.所以这里的THIS显然是经过选择器INIT之后的this,假设init了$('div'),假设页面上有3个DIV,这里面就会出现3个HTML.
这个callback,也就是我们
each中的FUNCTION,而for中的object[i]显然是具体的某个DIV对象,先被使用Array.prototype.slice将getElementsByTagName('div')无用的方法剪切掉,只留下其中的HTMLDIVOBJECT后又被它将这些结果加入了jQuery的this对象.
所以这里的callback.call(this[i],指的便是某个具体DIV对象,所以你可以在callback中使用
来达到和
同样的效果.
所以,我也看了jQuery的html:function.
我就不详解了,很简单,其实就是用
this[0].innerHTML.
我这边说的可能比较粗,但看过jQuery源代码的人一定知道.
所以我的疑问就是,为什么在callback中
this对象等同于jQuery$(this)对象中的this[0],难道说callback.call(this[i]将它合并到第0个去了?那之前所选择的$('div')里面的所有HTMLOBJECT在哪里?
非常期望高人解惑!!!谢谢!!!
是当前的元素!
<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
是当前的元素!
更多相关文章
- jquery解析php通过ajax传过来的json二维数组对象
- jquery手指触摸滑动放大图片的方法(比较靠谱的方法)
- jquery 阻止表单提交方法
- 关于js 方法,实现ajax请求时,return false/true无效的问题
- 在jQuery Mobile中做$(document).ready的正确方法是什么?
- ie8下jQuery动画没有ie7流畅,是浏览器性能问题吗?有没有什么解决方
- 有什么方法可以让jQuery循环在到达终点或开始时不循环?
- js限制文本框只能输入数字方法
- 模拟JQuery的Ready方法实现并出现的问题