- 浏览: 13730473 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
JQuery Plugin插件,如果大家不明白什么是JQuery插件或都不清楚如何编写可以查看其官方的网站:jQuery Authoring Guidelines
好了,下面有一些我觉得想做一个好的插件必须应有的要求:
1、在JQuery命名空间下声明只声明一个单独的名称
2、接受options参数,以便控制插件的行为
3、暴露插件的默认设置 ,以便外面可以访问
4、适当地将子函数提供给外部访问调用
5、保持私有函数
6、支持元数据插件
下面将逐条地过一遍:
只声明一个单独的名称
这表明是一个单独的插件脚本。如果你的脚本包含多个插件或者是互补的插件(像$.fn.doSomething()和$.undoSomething()),那么你可以根据要求声明多个名称。但一般情况下,力争用单一的名称来维持插件现实的所有细节。
在本例中,我们将声明一个叫“hilight”的名称
// 插件的定义 $.fn.hilight = function( options ){ // 这里就是插件的实现代码了... };
然后我们可以像这样调用它:
$("divTest").hilight();
接受一个options参数,以便控件插件的行为
$.fn.hilight = function(options){ var defaults = { foreground : 'red', background : 'yellow' }; //Extends out defaults options with those privided 扩展我们默认的设置 $.extend(defaults,options); };
而我们可以这样使用它:
$('#myDiv').hilight({ foreground: 'blue' });
暴露插件的默认设置 ,以便外面可以访问
作为插件的提升和优化,我们应该将上面的代码暴露出来作为插件的默认设置。
这非常重要,这样做让使用插件的用户可以非常容易地用最少的代码重写或自定义该插件。然而这个我们可以借助JavaScript function对象的优势:
$.fn.hilight = function(options){ //Extend our default options with those provided //Note that the first arg to extend is an empty object //this is to keep from overriding our "defaults" object var opts = $.extend({},$.fn.hilight.defaults,options); } $.fn.hilight.defaults = { foreground : 'red', background : 'yellow' };
这里值得注意的是$.extend()第一个参数是一个空的对象,这样可以让我们重写插件的默认设置
用户可以像这样使用插件:
// override plugin default foreground color $.fn.hilight.defaults.foreground = 'blue'; // ... // invoke plugin using new defaults $('.hilightDiv').hilight(); // ... // override default by passing options to plugin method $('#green').hilight({ foreground: 'green' });
适当地将子函数提供给外部访问调用
这个例子延续前面的例子,你会发现有一个有趣的方法可以扩展你的插件(然后还可以让其他人扩展你的插件 :))。例如,我们在插件里声明了一个函数叫“format”用来高这显示文本,我们的插件实现代码可能是这样子的:
$.fn.hight = function(options){ //iterate and reformat each mached element return this.each(function(){ var $this = $(this); //... var markup = $this.html(); //call our format function markup = $.fn.hilight.format(markup); $this.html(markup); }); }; //define our format function $.fn.hilight.format = function(txt){ return '<strong>' + txt + '</strong>'; };
保持私有函数
暴露插件有部分内容提供重写看上去似乎非常强大,但是你必须认真地考虑你的插件哪一部分是需要暴露出来的。一旦暴露出来,你就需要考虑这些变化点,一般情况下,如果你没有把握哪部分需要暴露出来,那么你可以不这样做。
那如何才能够定义更多的函数而不将其暴露出来呢?这个任务就交给闭包吧。为了证实,我们在插件中添加一个函数叫“debug”,这debug函数将会记录已选择的元素数量到FireBug控制台中。为了创建闭包,我们将插件定义的整部分都包装起来:
//create closure (function($){ //plugin definition $.fn.hilight = function(options){ debug(this); //... }; //private function for debuggin function debug($obj){ if(window.console && window.console.log){ window.console.log('hilight selection count :' + $obj.size()); } } //... //end of closure })(jQuery);
这样“debug”方法就不能被闭包这外调用了
支持元数据插件
依赖于所写的插件类型,并支持元数据插件会使得其本身更加强大。个人来讲,我喜欢元素据插件,因为它能让你分离标签中重写插件的配置 (这在写demo和示例时特别有用)。最重要的是,想现实它特别的容易!
$.fn.hilight = function(options){ //build main options before element interation var opts = $.extend({},$.fn.hilight.defaults,options); return this.each(function(){ var $this = $(this); //build element specific options var o = $.meta ? $.extend({},opts,$this.data()) : opts; //一般句话,搞定支持元数据 功能 }); }
几行的变化完成了以下几件事:
1、检测元数据是否已经配置
2、如果已配置,将配置属性与额外的元数据进行扩展
<!-- markup --> <div class="hilight { background: 'red', foreground: 'white' }"> Have a nice day!这是元数据 </div> <div class="hilight { foreground: 'orange' }"> Have a nice day!在标签中配置 </div> <div class="hilight { background: 'green' }"> Have a nice day! </div>
然后我们通过一句脚本就可以根据元数据配置分开地高亮显示这些div标签:
$('.hilight').hilight();
最后,将全部代码放在一起:
// //create closure // (function($){ // // plugin definition // $.fn.hilight = function(options){ debug(this); //build main options before element iteration var opts = $.extend({}, $.fn.hilight.defaults, options); //iterate and reformat each matched element return this.each(function(){ $this = $(this); //build element specific options var o = $.meta ? $.extend({}, opts, $this.data()) : opts; //update element styles $this.css({ backgroundColor: o.background, color: o.foreground }); var markup = $this.html(); //call our format function }); } // // private function for debugging // function debug($obj){ if(window.console && window.console.log){ window.console.log('hilight selection count: ' + $obj.size()); } }; // // define and expose our format function // $.fn.hilight.format = function(txt){ return '<strong>' + txt + '</strong>'; }; // // plugin defaults // $.fn.hilight.defaults = { foreground : 'red', background : 'yellow' }; // // end of clousure // })(jQuery);
2.
如何写一个Jquery 的Plugin插件
最近做项目想要一个控制会计数字输入的jquery插件,找了好久找不到, 没用办法,只有自己操刀上阵了,其实要求也不高, 就是:
1. 默认是: 0.00
2. 只能输入数字和小数点, 其它输入将被忽略
3. 输入整数后继续自动保持两位小数
4. 可以定义自己想保留几位小数
OK, 开始动手:
首先, 通过将函数封装为jquery plugin包, 可以将这个包非常容易的在各种项目和页面中使用, 而且代码管理维护起来方便. 再说, jquery的plugin实现起来超简单,为什么不这么做呢?如果你是第一次开发, 先阅读下这篇文章吧: How jQuery Works
一. Jquery Plugin 的基本框架
(function($) { $.fn.extend({ MyPlugin: function(options) { var defaults = { decimal_length: 2, }; var options = $.extend(defaults, options); var len = parseInt(options['decimal_length']); return this.each(function() { alert('edison'); }); } }); })(jQuery);
其中options就是参数, 调用方法为:
$('#ddd').MyPlugin({decimal_length:2});
好的, 我们接着完成要的功能: 文件名为 money.js
(function($) { var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask"; $.fn.extend({ money_type: function(options) { var defaults = { decimal_length: 2, }; var options = $.extend(defaults, options); var len = parseInt(options['decimal_length']); return this.each(function() { var input = $(this); function caret() { var input_value = input.val(); var reCat = /\d+\.?\d{0,2}/i; var_new_value = reCat.exec(input_value); input.val(var_new_value); } input.bind("click", function(e) { if (input.val() == '0.00') { input.select(); } }) .bind(pasteEventName, function() { setTimeout(caret, 0); }); }); } }); })(jQuery);
OK, 插件完成, 在使用的时候要包含这个文件和jquery文件, 然后通过以下代码就可以调用了
$('#ddd').money_type();// 默认保留两位小数
发表评论
-
使用jQuery和Pure.CSS创建一个可编辑的表格
2016-08-26 02:24 1236使用开源组件真的可以 ... -
2016十大优秀jQuery插件推荐
2016-08-26 02:24 2339当有限的开发知识限制了设计进展,你无法为自己插上创新的翅膀时 ... -
jQuery .tmpl() 用法
2016-08-26 02:22 1221参考效果: DEMO 下载: jquery-tmpl-ma ... -
jQuery:从零开始,DIY一个jQuery(2)
2016-08-19 03:06 1062在上篇文章我们简单实 ... -
jQuery:从零开始,DIY一个jQuery(1)
2016-08-19 03:00 995从本篇开始会陪大家一起从零开始走一遍 jQuery 的奇妙旅 ... -
Bootstrap 3: 菜单居中 Center content in responsive bootstrap navbar
2016-08-18 06:15 1597先看上面图片的效果,下面是代码: .navbar .nav ... -
jQuery: 操作select option方法集合
2016-08-18 06:06 3351每一次操作select的时候,总是要谷歌一下资料,真是太不爽 ... -
jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()
2016-08-16 05:31 1252原文:http://www.codeceo.com/arti ... -
jQuery: 选择器(DOM,name,属性,元素)
2016-08-11 01:17 4515出处:http://www.cnblogs.com/star ... -
jQuery: 合并表格中相同文本的相邻单元格
2016-08-01 08:02 1387一、效果 二、代码 <!DOCTYPE ... -
Bootstrap 3: 使用注意box-sizing细节及解决方法
2016-08-01 07:58 1603一、bootstrap样式 在Bootstrap v3.3 ... -
域名详解
2016-07-29 12:51 863域名 域名就是用来唯 ... -
Bootstrap 3: 图标转换事件 Change icons when toggle
2016-07-20 13:39 2322代码: <link href="http: ... -
Bootstrap 3: 图标转换事件 Change icons when toggle
2016-07-19 07:12 765代码: <link href=" ... -
jQuery:无限循环两个或者多个事件 click / toggle between two functions
2016-07-19 07:12 1646插件: (function($) { $.fn. ... -
javascript 中面向对象实现 如何继承
2016-07-14 01:01 548上一篇博客已经说了关于javascript中的封装, 其中也 ... -
javascript 中的面向对象实现 如何封装
2016-07-12 12:27 1229javascript 是一门很灵活的语言,也是一门有缺陷的语 ... -
AngularJS jQuery 共存法则
2016-06-14 05:26 3628寻找正确的方法,如何在AngularJS里使用jQuery ... -
七步从Angular.JS菜鸟到专家(3):数据绑定和AJAX
2016-06-04 05:28 1165AngularJS学习列表:七步 ... -
七步从Angular.JS菜鸟到专家(2):Scopes
2016-06-04 05:27 736AngularJS学习列表:七步走 Angular.js 从 ...
相关推荐
标题为《一步一步教你写一个jQuery的插件教程(Plugin)》,这篇教程旨在带领读者了解如何创建一个jQuery插件,具体例子是一个能够高亮显示文本的简单插件。在开始之前,有必要明确几个开发插件时需要注意的要点。首先...
`jQuery webcam plugin`是一个优秀的JavaScript库,它利用jQuery框架实现了与浏览器摄像头的交互,让用户无需离开页面即可拍摄并处理照片。 该插件的核心特性包括: 1. **易用性**:基于jQuery的API设计使得该插件...
使用jQuery开发Plugin插件指南
jQuery plugin for autocomplete - jQuery自动完成插件
jQuery 插件使客户端表单验证变得容易,同时仍然提供了大量的自定义选项。...该插件捆绑了一组有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个 API 来编写您自己的方法。 已修复CVE-2021-21252漏洞
在"office_blue"这个文件名中,我们可以推测这是一个预设的主题或者样式,可能是jQuery Grid View插件内置的一种视觉样式,为表格提供了一种专业且商务化的外观,类似于常见的办公软件界面风格。这种主题可能包含了...
最新的struts2-jquery-plugin插件3.3.3,包括jquery-ui和grid,使用标签实现。
表格拖拽排序插件 Table Drag and Drop JQuery plugin v0.7 最新0.7版本
图书的源代部分; 还有由于容量的原因, 视频和web实例图片没有上传. 《jQuery全能权威指南:jQuery Core+jQuery Plugin+...、jQuery UI、jQuery Mobile以及大量第三方的插件库和2800多个应用jQuery技术的网页参考。
在这个文件夹下,可能有一个minified版本的插件文件,如`jquery.mask.min.js`,它是一个轻量级的版本,适用于提高网页加载速度。 3. **index.html**:这是一个示例文件,展示了如何在实际项目中使用jQuery Mask ...
- **Select Combo Plugin**: 结合多个`<select>`元素为一个组合。 - **jQuery-Linked Select**: 实现两个或多个`<select>`元素的关联。 - **Auto-populate multiple select boxes**: 自动填充多选框中的选项。 -...
总结,jQuery Media Plugin是一个强大且易用的工具,它简化了在网页中集成多媒体内容的过程,提供了丰富的功能和良好的兼容性。无论是初学者还是经验丰富的开发者,都能快速上手,创建出功能完善的多媒体应用。
首先,jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。jQuery可编辑插件是基于jQuery构建的,扩展了其功能,使静态HTML元素变为可编辑的字段。用户只需点击文本,即可...
这就是jQuery Ellipsis插件发挥作用的地方,它添加了一个悬停事件,使得用户可以鼠标悬停查看完整的文本内容。 安装jQuery Ellipsis插件非常简单。首先,确保你的项目中已经包含了jQuery库。然后,你可以通过以下...
**jQuery Cycle Plugin** 是一个广泛使用的JavaScript库,专门用于创建动态和交互式的图像滑块、轮播和幻灯片效果。这个插件充分利用了jQuery的简洁API和强大的DOM操作功能,使得开发者能够轻松地在网站上实现各种...
jQuery作为一个轻量级的JavaScript库,提供了丰富的插件来增强这一功能。本篇文章将深入探讨“jQuery图片预览插件”,包括其工作原理、使用方法以及常见应用场景。 首先,我们来看单张图片预览。在网页上,用户可能...
1. **jQuery插件**:jSignature是基于jQuery构建的一个插件,它利用jQuery的事件处理和DOM操作能力,简化了在网页上实现签名功能的复杂度。 2. **手写签名**:jSignature允许用户使用鼠标或手指在指定区域内绘制签名...
在IT行业中,jQuery是一个广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计和Ajax交互。jQuery的流行在于其易用性、兼容性和丰富的插件生态系统。"50个jQuery插件介绍"这篇文档很...
jQuery plugin: Autocomplete 参数及实例 官网:jQuery plugin: Autocomplete 此插件依赖于 jquery 1.2.6 --- jquery 1.8.3 转自:http://www.cnblogs.com/duanhuajian/p/3398904.html