首页 > 代码库 > jQuery 插件开发解析
jQuery 插件开发解析
那么首先我们来简单的看一下最正统的 jQuery 插件定义方式:
?
1 2 3 4 5 6 7 8 9 10 11 12 | ( function ($) { $.fn.插件名 = function (settings) { //默认参数 var defaultSettings = { } /* 合并默认参数和用户自定义参数 */ settings = $.extend(defaultSettings, settings); return this .each( function () { //代码 }); //插件在元素内多次出现 } })(jQuery); |
先来看模板中的第一行代码(当然我们要把这一行代码的后半部分给揪出来一起看,不然第一行就完全无意义了):
?
1 2 3 | ( function ($) { })(jQuery); |
这行代码其实是用于创建一个匿名函数。如果你对匿名函数和闭包不了解,将会对这种代码非常疑惑,那么强烈建议您阅读JavaScript中的匿名函数及函数的闭包这篇文章。
jQuery 的继承方法 $.extend —— $.extend 在jQuery 插件开发中有个很重要的作用,就是用于合并参数。
?
1 2 3 4 5 6 7 8 9 | $.fn.tip = function (settings) { var defaultSettings = { //颜色 color: ‘yellow‘ , //延迟 timeout: 200 } /* 合并默认参数和用户自定义参数 */ settings = $.extend(defaultSettings, settings); alert(settings.input); <br>} |
jQuery 插件定义第二种方式:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | ( function ($) { //插件定义--更换名字 $.fn.tabpanel = function (method) { var methods = $.fn.tabpanel.methods; if (methods[method]) { return methods[method].apply( this , Array.prototype.slice.call(arguments, 1)); } else if ( typeof method === ‘object‘ || !method) { return methods.init.apply( this , arguments); } else { } } //支持的方法 $.fn.tabpanel.methods = { //初始化 init: function (p_options) { tabpanelBind(p_options, this ); }, add: function (p_options) { addTab(p_options, this ); tabpanelBind(p_options, this ); // debugger } } function add(p_options) { var _defaults = { id: "" } <br> //内部实现略.........<br> return _index; } <br>})(jQuery);<br><br>调用 $( "#team" ).tabpanel( ‘add‘ , "" ); |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。