厉害了,我的哥
自己排查出原因了。
排查过程,把_bindContScroll函数内的内容都屏蔽,只返回self,还是报错,说明跟_bindContScroll函数没关系。
那问题只可能出在前面,在 this._initSilderDragEvent() 函数中找,发现没有在函数的一开始就将this交给self,而是在函数中间将this交给self,因作用域的原因导致这个操作的效果打了折扣,最后return了一个错误的self,导致对象本身的属性和函数传递不畅,以至于爆出_bindContScroll不是函数的错误。
另外,给老师提个意见,本身后半课程讲的就比较粗糙,课程页面切换有加了花里胡哨的效果,我看的时候更眼花缭乱了,希望老师以后的课程改进。总之,还是感谢老师的。
for 和if来判断锚点的位置
复制代码的不怎么好!
锚点啊
源码地址 https://github.com/841660202/custom-scroll-bar.git 不好意思刚改了下地址
干她啊
敲一敲 才会发现错误 自己动手总会有错误的时候 分给我吗?
getMaxScrollPosition()方法里面的this值赋给self,你self写错了
原来是前面少了个分号
初始化滚动条的那个赋值位置不对,不要在函数里面
在_initDomEvent函数里已经定义过this.$slider = $(opts.sliderSelector);
this.$slider并不是options对象的属性,而是用$(opts.sliderSelector)获取的值
这是"&&"的其中一个用法(其他用法就不详细说了,百度吧)
意思是如果两个都为object对象就返回第二个对象(第一个为jquery对象,第二个为DOM对象)
再利用DOM对象控制它的高。。
其实 var sliderEl=self.$slider && self.$slider[0]; 是等价于 var sliderEl=self.$slider[0]; 只不过是为了保证对象的存在
对,就是吧原本的 contSelector : ".scroll-wrap", 改成 contSelector : ".scroll-cont",
我也遇到过你这个问题,后面发现是self的值已经指向window了,在前面再加一句var self = this就好了
https://github.com/fangxiangxiang/Custom-Scroll
确实是作用域的问题 self那是已经指向window了 直接用this也不太好 因为绑定了事件 this经常会变 还是在函数前面加一个vat self = this比较好
_initSliderDragEvent函数里加上var self =this; 将CusScrollBar这个对象传进来就可以了。 源码下载地址:
https://github.com/fangxiangxiang/Custom-Scroll