在写jQuery简单插件的时候遇到一个小问题:this
$.fn.fadeOneByOne=function(){returnthis.eq(0).fadeOut(1000,function(){$(this).next()....
$.fn.fadeOneByOne = function(){
return this.eq(0).fadeOut(1000,function(){
$(this).next().fadeOneByOne();
});
}
$("li").fadeOneByOne();
在fadeOut回调函数中this的值是不是值得就是$('li').eq(0)
如果是的,这个this就是一个jQuery对象?在回调里面为什么不能直接使用this.next(),而是要手动转换成jQuery对象。 展开
return this.eq(0).fadeOut(1000,function(){
$(this).next().fadeOneByOne();
});
}
$("li").fadeOneByOne();
在fadeOut回调函数中this的值是不是值得就是$('li').eq(0)
如果是的,这个this就是一个jQuery对象?在回调里面为什么不能直接使用this.next(),而是要手动转换成jQuery对象。 展开
1个回答
展开全部
this是js对象,$(this)就变成jq对象了。 .next()是jq的方法,所以必须是jq对象才能调用。同理,一些js的方法jq对象也调用不了,需要用js对象调用。
我也是杂牌军,这是我个人的理解。
我也是杂牌军,这是我个人的理解。
更多追问追答
追问
this是js对象,这个说法成立?
this.eq(0) 为什么可以 this在这儿肯定是一个jQuery对象
而且this.eq(0)既然可以调用fadeOut方法,那就是一个jq对象,那为什么在回调里面 this又变成一个js对象了?
追答
$.fn.fadeOneByOne
是定义一个jq方法,使用$("li").fadeOneByOne();调用,那么外面的this就是等于$(li)。但是这个this作用域在当前函数里面,fadeOut完成后响应的函数有自己的this,这个this不等于$(li),应该是等于li。所以使用$(this)调用。
大概的理解,不一定是正确的。说出来讨论讨论,我也要滚回去好好学习了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询