在写jQuery简单插件的时候遇到一个小问题:this
答案:1 悬赏:50
解决时间 2021-02-21 08:50
- 提问者网友:雾里闻花香
- 2021-02-21 03:06
在写jQuery简单插件的时候遇到一个小问题:this
最佳答案
- 二级知识专家网友:神的生死簿
- 2021-02-21 03:44
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)调用。
大概的理解,不一定是正确的。说出来讨论讨论,我也要滚回去好好学习了。
追问:昨天晚上看了一下源码,是在fadeOut的匿名回调函数中返回的是js对象,也就是$("li").eq(0)[0]这个dom对象,确实不是想当然的jq对象了
我也是杂牌军,这是我个人的理解。追答
追问: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)调用。
大概的理解,不一定是正确的。说出来讨论讨论,我也要滚回去好好学习了。
追问:昨天晚上看了一下源码,是在fadeOut的匿名回调函数中返回的是js对象,也就是$("li").eq(0)[0]这个dom对象,确实不是想当然的jq对象了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |