有几点不理解的地方
$.fn.extend({
showHide:function(option){
// 这里用each遍历的原因:因为到时候使用这个方法的不只一个对象,而是一堆对象,我们用数组传入,遍历数组绑定方法
return this.each(function(){
var $this = $(this),
// 这里用typeof是为了判断传入的是对象还是字符串,如果是对象则执行后面的语句
// 这个方法是将defaults和options合并到{}中
options = $.extend({},defaults,typeof option === 'object' && option),
mode = $this.data('showHide');//这句话不理解
// 初始化时mode
if (!mode) {
$this.data('showHide',mode = showHide($this,options));
}
// 如果mode里面传入的不是对象,而是一个字符串,而且这个字符串是函数名,如'show',则调用这个动画
if (typeof mode[option] === 'function') {
mode[option]();
console.log('传入的是字符串');
}
})
}
})
关于mode的这几句代码都没能够理解
正在回答
同学你好,
1、其实这里主要使用的是data()方法,此方法向被选元素附加数据,或者从被选元素获取数据。
获取数据的时候通过数据名称就可以获取:
这里的意思就是通过data方法获取数据,如果数据不存在,就设置一下数据,下次获取的时候就有了,mode是调用showHide方法返回出来的对象:
2、
这段代码的意思是通过传入的option参数,在mode对象中判断属性值是否是函数,如果是的话就调用这个函数,参数是在html中调用传入的:
匹配mode对象中的show和hide方法。
自己可以再测试理解下,祝学习愉快!
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星