一个javascript小问题,为什么this表示的是DOM对象?
<div><span>文本1</span></div><p><span>文本2</span></div><scriptlanguage="javascript">vars...
<div><span>文本1</span></div>
<p><span>文本2</span></div>
<script language="javascript">
var span = $("span");
span.each(function(n){
this.sytle.fontsize = (n+1)*12+"px";
});
</script>
这里用到了jquery。
span = $("span"); 得到的span不是已经是jquery对象了吗?
怎么在span.each(fn)里面this又指的是DOM对象了呢?
想用jquery的方法还得需要把$(this).css("font-size",(n+1)*12+"px");
那这里的this指的不是span吗? 可是span不是已经是jquery对象了吗?
哦,听了回答者: loveOuyoko的明白一些了。不过你说的《匿名函数没有显式的调用者,所以只能是最上层的dom代表this》中最上层的dom是什么?一个匿名函数没有调用者那么他的最上层的dom是啥? 展开
<p><span>文本2</span></div>
<script language="javascript">
var span = $("span");
span.each(function(n){
this.sytle.fontsize = (n+1)*12+"px";
});
</script>
这里用到了jquery。
span = $("span"); 得到的span不是已经是jquery对象了吗?
怎么在span.each(fn)里面this又指的是DOM对象了呢?
想用jquery的方法还得需要把$(this).css("font-size",(n+1)*12+"px");
那这里的this指的不是span吗? 可是span不是已经是jquery对象了吗?
哦,听了回答者: loveOuyoko的明白一些了。不过你说的《匿名函数没有显式的调用者,所以只能是最上层的dom代表this》中最上层的dom是什么?一个匿名函数没有调用者那么他的最上层的dom是啥? 展开
4个回答
展开全部
朋友,jquery只不过是把js封装的一个框架而已,为了是方便实现一些比较复杂的功能,底层代码还是js,jquery对象就是DOM对象
比如:span = $("span"); 实际上就是span = document.getElementById("span");没区别,只是用 $的写法简化了你的编程,且用起来更容易。
this在js里可以理解成指针的意思,指代上层对象的引用,当然this有时候会用复杂的变化,指向的上层对象会不同,这里我就不细说了。
所以不管是jquery方法还是js方法,其实都是一样的,想怎么写都行,把功能实现就好了,别把事情搞复杂了
比如:span = $("span"); 实际上就是span = document.getElementById("span");没区别,只是用 $的写法简化了你的编程,且用起来更容易。
this在js里可以理解成指针的意思,指代上层对象的引用,当然this有时候会用复杂的变化,指向的上层对象会不同,这里我就不细说了。
所以不管是jquery方法还是js方法,其实都是一样的,想怎么写都行,把功能实现就好了,别把事情搞复杂了
展开全部
this在函数里指向调用当前函数的对象,
each本身是一个函数,如果this可以直接写在each函数中那当然是指span对象,但很明显each里面是嵌套了一个匿名函数的,匿名函数没有显式的调用者,所以只能是最上层的dom代表this
each本身是一个函数,如果this可以直接写在each函数中那当然是指span对象,但很明显each里面是嵌套了一个匿名函数的,匿名函数没有显式的调用者,所以只能是最上层的dom代表this
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
each(callback) 返回值:jQuery
以每一个匹配的元素作为上下文来执行一个函数。
意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素)。而且,在每次执行函数时,都会给函数传递一个表示作为执行环境的元素在匹配的元素集合中所处位置的数字值作为参数(从零开始的整型)。 返回 'false' 将停止循环 (就像在普通的循环中使用 'break')。返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue')。
这是jquery手册里写的,既然你用了.each,那你就要遵循.each的规则,里面的this是指向对象(你js里定义的span而非html的标签)内的DOM元素,不知道我这样解释你是否明白。
以每一个匹配的元素作为上下文来执行一个函数。
意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素)。而且,在每次执行函数时,都会给函数传递一个表示作为执行环境的元素在匹配的元素集合中所处位置的数字值作为参数(从零开始的整型)。 返回 'false' 将停止循环 (就像在普通的循环中使用 'break')。返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue')。
这是jquery手册里写的,既然你用了.each,那你就要遵循.each的规则,里面的this是指向对象(你js里定义的span而非html的标签)内的DOM元素,不知道我这样解释你是否明白。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
this 仅仅指的是 所属方法或者函数所指定的某个对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询