求高手解决我自己的jquery一个插件中this的问题

html文件我这样写插件的js我这样写这样是没问题的,我就是让滚动条滚动到某个位置,然后图片的css会改变但是问题在html文件里,$('img')如果写着$(this)... html文件我这样写

插件的js我这样写

这样是没问题的,我就是让滚动条滚动到某个位置,然后图片的css会改变
但是问题在html文件里,

$('img')如果写着$(this),那个$(this),就变成了window了,因为插件写的是$(window).scroll,如何能使$(this)指向的是我自己选的img呢????
展开
 我来答
百度网友1f29177
2014-01-06 · TA获得超过646个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:343万
展开全部
if(scrollTop >= 300){
    fn();
}
修改为
if(scrollTop >= 300){
    fn.call(_this);
}
xiangyuecn
2014-01-06 · TA获得超过336个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:309万
展开全部

@杀心人 正解哦,因为传入的函数fn定义时的上下文是window,所以fn在非严格模式下执行时this==window。

要改变this引用,最直接明了的方法就是:

_this.fn=fn;
...if(scrollTop==300){
_this.fn();//fn函数现在的上下文就是_this了

然后发现这个还是太繁琐了,于是就有了call(context,args1,args,...)和apply(context,[args1,args2,...])方法:

...if(scrollTop==300){
fn.call(_this);//fn函数现在的上下文就是_this了

//或者
fn.apply(_this);//这个和call的差异就是这个可以把函数得参数用数组形式传进去

/*
具体可已参考http://www.w3school.com.cn/js/pro_js_inheritance_implementing.asp
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
showmest
2014-01-06 · TA获得超过123个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:163万
展开全部
在插件中
fn(_this); //将$(this) 传给fn() :

html中
....................
.........rolling(function(img) {
img.css ................
},100);
......................
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式