- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
jQuery插件开发的模式和结构
jQuery插件开发一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法;另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通过选择器获取的jQuery对象实例也能共享该方法。一、在讲解jQuery插件基本结构和模式前,先介绍下两个重要的方法,还有不知啥原因,代码无法折叠,导致整体篇幅稍微有点长,阅读时请加点耐心:1、$.extend(target, [object1], [objectN])该方法主要用于合并两个或更多对象的内容(属性)到第一个对象,并返回合并后的第一对象。如果该方法只有一个参数target,则该参数将扩展jQuery的命名空间,即作为静态方法挂在jQuery全局对象下,如jQuery里的$.ajax、$.getJSON全局函数等:// 将hello方法挂在jquery全局对象下,作为静态方法$.extend({hello: function() {alert(hello);} });又如,在jQuery全局对象中扩展一个hcy命名空间:$.extend({ hcy: { } });并将hello方法扩展到之前扩展的JQuery的hcy命名空间中去:$.extend($.hcy, {hello: function() {alert(hello);}});在开发插件时,也可以将方法扩展到jQuery的原型中去,如:$.extend($.fn, {hello: function() {alert(hello);}});值得注意的是:多个对象参数合并时,会破坏第一个对象的结构,所以可传递一个空对象作为第一个参数,如:$.extend({}, object1, object2);另外,对于深度拷贝,即如果对象中也嵌套子对象,则会拷贝并覆盖子对象(如果有同名属性)全部的属性,需要设置第一个参数deep为true值,如:$.extend(true, target, object1, [objectN])。2、$.fn.extend(target)在jQuery中,$.fn本质上是等于jQuery的原型,即$.fn = $.prototype,所以该方法实际上是为jQuery原型添加方法,即把target对象的方法添加到jQuery原型中去,这样jQuery对象实例就可以访问添加的方法了,这也是jQuery插件开发常用的方法,特别是添加多个接口时。如:// 将hello、hello2方法添加到jquery原型中$.fn.extend({hello: function() {alert(hello!);}, hello2: function() {alert(hello again!);}});如果添加单个方法到jQuery原型中,可使用$.fn.pluginName方法添加,如:// 将hello方法添加到jquery原型中$.fn.hello = function() { // ... };??二、在开发过一些 jQuery 插件后,慢慢的探索出了一套开发jQuery插件的基本结构和模式。这样在面对复杂多变的需要方案时,只要专注最主要的逻辑代码就行了。另外,使用相同的设计模式和架构也让修复bug或者二次开发更容易。在这里分享一些平时遇到和总结的经验:1、把全部代码放在闭包(一个即时执行函数)里此时闭包相当于一个私有作用域,外部无法访问到内部的信息,并且不会存在全局变量的污染情况。官方创建开发规范的解释是:a) 避免全局依赖;b) 避免第三方破坏;c) 兼容jQuery操作符$和jQuery 。如下所示:(function($) { // 局部作用域中使用$来引用jQuery // ...})(jQuery);这段代码在被解析时可理解成以下代码:varjQ = function($) { // code goes here}; jQ(jQuery);2、提供插件的默认参数选项一个扩展性良好的插件应该是可以让使用者根据需求自定义参数选项,并控制插件的行为,所以提供恢复默认选项是很有必要的。你可以通过jQuery的extend方法来设置这些选项:var defaults = { name: hcy, age: 22,job: student,walk: function() { // ... } };$.extend({}, defaults, options || {});注:参数选项设置时也可以使用如下模式,即把参数对象挂在插件命名空间下:?$.fn.pluginName.defaults = { name: hcy, age: 22,job: stud
您可能关注的文档
- 5院前急救与院内急诊有效衔接的工作流程.doc
- 66例皮肤黏膜淋巴结综合征患儿的护理体会.docx
- 60泥鳅的做法.doc
- 68例青少年慢性鼻窦炎内窥镜鼻窦手术疗效分析.doc
- 6EN135011建筑制品和构件的燃烧等级测定.doc
- 65例急性尿潴留患者首次导尿失败处理的体会.doc
- 6种常用装修材料的计算方法.doc
- 6发现美院施工现场防扬尘防噪声污染措施.doc
- 6地理信息系统在国内外应用现状.doc
- 6装置场所和人员剂量监测制度.doc
- 宁夏吴忠市盐池一中学2025届中考历史对点突破模拟试卷含解析.doc
- 2025届浙江省温州市绣山中学中考联考历史试题含解析.doc
- 2025届湖北省黄冈市初级中学中考四模历史试题含解析.doc
- 2025届辽宁沈阳市大东区重点达标名校中考历史模拟试题含解析.doc
- 云南省红河州个旧市2025届中考五模历史试题含解析.doc
- 2025届浙江省绍兴市迪荡新区重点中学中考考前最后一卷历史试卷含解析.doc
- 江苏省苏州市常熟市达标名校2025届中考一模生物试题含解析.doc
- 陕西省西安市西安交通大附属中学2025届中考历史适应性模拟试题含解析.doc
- 浙江省丽水市第四中学2025届中考生物五模试卷含解析.doc
- 山西省运城中学校2025届中考历史考前最后一卷含解析.doc
最近下载
- 智算中心及算力产业集群项目运营管理方案.docx VIP
- 2025安徽芜湖市湾沚区招聘社区工作者11人考试备考题库及答案解析.docx VIP
- 锅炉安装改造维修质量保证体系文件(手册+程序文件+表格+工艺文件汇编)-符合TSG 07-2019特种设备质量保证管理体系.docx
- 甲状腺科普宣教.pptx VIP
- 贵州省2025年高职院校分类考试招生中职生文化综合语文试题答案.docx VIP
- 智算中心及算力产业集群项目节能评估报告.docx VIP
- 甲状腺的科普宣教.pptx VIP
- 高考试题——物理(全国卷)云南.doc VIP
- 智算中心建设可行性分析.docx VIP
- 产前筛查实验室标准操作程序文件.pdf VIP
文档评论(0)