老师,插件的写法不太懂
来源:2-11 将显示隐藏封装成模块--完善
qq_勿忘初心_H
2020-05-03 20:49:13
$.fn.extend({ showHide:function(option){ return this.each(function(){ var $this=$(this), // mode=showHide($this,typeof option==='object' && option); options=$.extend({},defaults,typeof option==='object'&& option); //单例思想,前面多次调用时,每次都要调用showHide函数,这里将showHide()保存下来 mode=$this.data('showHide'); //利用data将showHide保存下来 if (!mode) { $this.data('showHide',mode=showHide($this,options)); } if (typeof mode[option] === 'function') { mode[option](); } }); } })
return之后为什么要用 this.each()
2回答
同学你好,关于同学的问题解答如下:
1、$.fn.extend({})是jquery中的写法,是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”,简单说就是给jQuery对象添加方法。比如要开发一个插件,当点击编辑框的时候,弹出当前编辑框里的内容,代码如下:
$("#input1") 为一个jQuery实例,当它调用成员方法 alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。
2、先return this.each(),后调用each()方法,each()方法返回jQuery对象,所以这样就可以继续链式操作了。
3、if (typeof mode[option] === 'function') {}是判断传入的值是否是mode的一个功能,是就执行,mode[option]();就是执行的意思。
祝学习愉快!
樱桃小胖子
2020-05-05
同学你好,具体是哪里不懂呢?可以详细描述一下具体是哪里不懂,便于更加准确的定位问题并帮助解答。
祝学习愉快!
相似问题