如何自己开发一款js或者jquery插件
来源:互联网 发布:java中sdk 编辑:程序博客网 时间:2024/05/17 06:01
第二种插件开发方式一般是如下定义
$.fn.pluginName = function() { //your code here}
插件开发,我们一般运用面向对象的思维方式
例如定义一个对象
var Haorooms= function(el, opt) { this.$element = el, this.defaults = { 'color': 'red', 'fontSize': '12px', 'textDecoration':'none' }, this.options = $.extend({}, this.defaults, opt)}//定义haorooms的方法haorooms.prototype = { changecss: function() { return this.$element.css({ 'color': this.options.color, 'fontSize': this.options.fontSize, 'textDecoration': this.options.textDecoration }); }}
$.extend({}, this.defaults, opt)有{}主要是为了创建一个新对象,保留对象的默认值。
$.fn.myPlugin = function(options) { //创建haorooms的实体 var haorooms= new Haorooms(this, options); //调用其方法 return Haorooms.changecss();}
调用这个插件直接如下就可以
$(function() { $('a').myPlugin({ 'color': '#2C9929', 'fontSize': '20px' });})
上述开发方法的问题
上面的开发方法存在一个严重的问题,就是定义了一个全局的Haorooms,这样对于插件的兼容等等各个方面都不好。万一别的地方用到了Haorooms,那么你的代码就悲催了!现在我们把上面的代码包装起来,用一个自调用匿名函数(有时又叫块级作用域或者私有作用域)包裹,就不会出现这个问题了!包括js插件的开发,也是一样的,我们用一个自调用匿名函数把自己写的代码包裹起来,就可以了!包裹方法如下:
(function(){})()
用上面的这个包裹起来,就可以了。
但是还有一个问题,当我们研究大牛的代码的时候,前面经常看到有“;”,那是为了避免代码合并等不必要的错误。
例如,我们随便定义一个函数:
var haoroomsblog=function(){}(function(){ })()
由于haoroomsblog这个函数后面没有加分号,导致代码出错,为了避免这类情况的发生,通常这么写!
;(function(){ })()
把你的插件代码包裹在上面里面,就是一个简单的插件了。(注js插件和jquery插件都是如此)
还有一个问题
把你的插件包裹在
;(function(){ })()
基本上可以说是完美了。但是为了让你开发的插件应用更加广泛,兼容性更加好,还要考虑到用插件的人的一些特殊的做法,例如,有些朋友为了避免jquery和zeptojs冲突,将jquery的前缀“$”,修改为“jQuery”,还有些朋友将默认的document等方法修改。为了让你的插件在这些东西修了了的情况下照常运行,那么我们的做法是,把代码包裹在如下里面:
;(function($,window,document,undefined){ //我们的代码。。})(jQuery,window,document);
就可以避免上面的一些情况了!
至此,你开发的插件就算完美了!
- 如何自己开发一款js或者jquery插件
- 如何自己开发一款js或者jquery插件
- 如何自己开发一款js或者jquery插件
- 【转】如何自己开发一款js或者jquery插件
- 如何自己开发一款js或者jquery插件
- 如何自己开发一款js或者jquery插件
- 如何自己开发一款js或者jquery插件
- 如何自己开发一款js或者jquery插件
- jquery:如何开发自己的jQuery插件
- 如何判断一款jQuery插件的好坏
- 如何自己开发一个简单的jquery 插件
- jquery.loadmask.js ---jquery一款加载等待插件
- 自己整理的一款日历插件Calendar.js
- 如何开发jquery插件
- 自己写插件。jQuery插件开发模式
- 推荐一款js插件
- 推荐一款移动开发必备的jQuery Mobile插件
- 推荐一款 表情插件《jQuery QQ表情插件jquery.qqFace.js》
- js错误之js初步认识之define详解
- AndroidStudio添加assets目录并获取其路径
- 【开源-Android】基于蓝牙备份联系人
- linux下文件搜索
- bootstrap 水平导航 鼠标移动下拉,点击下拉。
- 如何自己开发一款js或者jquery插件
- 无法使用iotop怎么办
- poj 1502MPI Maelstrom
- 【前端笔记--转载】JS中是否一切皆对象
- Mybatis 外部修改数据库形成的缓存问题
- 【翻译自mos文章】设置了RemoveIPC=yes 的RHEL7.2 会crash掉Oracle asm 实例和Oracle database实例
- c++中 vs 简单的对txt文件读写
- [LeetCode]232. Implement Queue using Stackssil
- 也说TypeScript