老师,插件的写法不太懂

来源: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回答

樱桃小胖子

2020-05-06

同学你好,关于同学的问题解答如下:

1、$.fn.extend({})是jquery中的写法,是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”,简单说就是给jQuery对象添加方法。比如要开发一个插件,当点击编辑框的时候,弹出当前编辑框里的内容,代码如下:

http://img.mukewang.com/climg/5eb21bb409d391a007380316.jpg

$("#input1") 为一个jQuery实例,当它调用成员方法 alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。

2、先return this.each(),后调用each()方法,each()方法返回jQuery对象,所以这样就可以继续链式操作了。

3、if (typeof mode[option] === 'function') {}是判断传入的值是否是mode的一个功能,是就执行,mode[option]();就是执行的意思。

祝学习愉快!


0

樱桃小胖子

2020-05-05

同学你好,具体是哪里不懂呢?可以详细描述一下具体是哪里不懂,便于更加准确的定位问题并帮助解答。

祝学习愉快!

0
hq_勿忘初心_H
h if (typeof mode[option] === 'function') { mode[option](); } mode[option]是什么意思,为什么要这么判断
h020-05-05
共2条回复

0 学习 · 14456 问题

查看课程