老师,插件的写法不太懂

老师,插件的写法不太懂

		$.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对象添加方法。比如要开发一个插件,当点击编辑框的时候,弹出当前编辑框里的内容,代码如下:

http://img1.sycdn.imooc.com//climg/5eb21bb409d391a007380316.jpg

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

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

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

祝学习愉快!


卡布琦诺 2020-05-05 15:58:07

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

祝学习愉快!

  • 提问者 qq_勿忘初心_H #1
    $.fn.extend({})这个插件的方式应该要怎么理解,还有插件里面return之后为什么要用 this.each()
    2020-05-05 20:08:46
  • 提问者 qq_勿忘初心_H #2
    if (typeof mode[option] === 'function') { mode[option](); } mode[option]是什么意思,为什么要这么判断
    2020-05-05 20:33:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师