求高手解决我自己的jquery一个插件中this的问题
html文件我这样写插件的js我这样写这样是没问题的,我就是让滚动条滚动到某个位置,然后图片的css会改变但是问题在html文件里,$('img')如果写着$(this)...
html文件我这样写
插件的js我这样写
这样是没问题的,我就是让滚动条滚动到某个位置,然后图片的css会改变
但是问题在html文件里,
$('img')如果写着$(this),那个$(this),就变成了window了,因为插件写的是$(window).scroll,如何能使$(this)指向的是我自己选的img呢???? 展开
插件的js我这样写
这样是没问题的,我就是让滚动条滚动到某个位置,然后图片的css会改变
但是问题在html文件里,
$('img')如果写着$(this),那个$(this),就变成了window了,因为插件写的是$(window).scroll,如何能使$(this)指向的是我自己选的img呢???? 展开
展开全部
@杀心人 正解哦,因为传入的函数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
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在插件中
fn(_this); //将$(this) 传给fn() :
html中
....................
.........rolling(function(img) {
img.css ................
},100);
......................
fn(_this); //将$(this) 传给fn() :
html中
....................
.........rolling(function(img) {
img.css ................
},100);
......................
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询