jquery插件扩展详解

从入门到精通:Cursor使用全攻略 Cursor是一款基于VSCode深度定制的AI编程工具,由Anysphere公司开发。它将AI技术与代码开发深度融合,能够理解自然语言指令并生成高质量代码,支持代码补全、跨文件上下文理解等功能。本文详细介绍了Cursor的安装设置、界面导航、基本操作和Composer模式等核心功能,并提供了高效提示词写作技巧和实际应用案例(如浏览器插件开发、复杂表单组件构建等)。文章还总结了使用注意事项和常见问题解决方案,展望了AI编程工具的发展前景。Cursor通过智能代码生成和项目理解能力,显著提升了开发效率,适合各 阅读详情

为了顺利完成jquery插件的开发,细致阅读了jquery.grid.src.js 源码,感觉则个插件无论在效果显示,还是在使用方法上面,都非常方便。同时,给我们提供了封装jquery插件的良好思维。在此基础上,我借助jquery的另外一个插件jquery.datatables 封装了一个jquery.datatable.combox,来实现了输入框的下拉框选择功能。

在此,简单总结了一下开发jquery插件的方法:

1     命名规则:

   a)插件的文件命名必须严格遵循jQuery.[插件名].js的规则,以便于与其他的js文件的区分,如新插件文件jquery.newplugin.js.

   b)如果是对象级别插件,所有的方法都应依附于jquery.fn主体对象;如果是类级别插件,所有的方法都应依附于jquery对象

2 在开发之前需要对jquery相关技术点有一些理解

2.1 jquery中extend方法的使用

2.1.1 使用语法

     extend(dest,src1,src2,src3...);

它的含义是将src1,src2,src3...合并到dest中,返回值为合并后的dest,由此可以看出该方法合并后,是修改了dest的结构的。如果想要得到合并的结果却又不想修改dest的结构,可以如下使用:

var newSrc=$.extend({},src1,src2,src3...)//也就是将"{}"作为dest参数

2.1.2 其它用法

    extend(boolean,dest,src1,src2,src3...)

第一个参数boolean代表是否进行深度拷贝,其余参数和前面介绍的一致,什么叫深层拷贝,我们看一个例子:

var result=$.extend( true,  {}, 

    {name: "John", location: {city:"Boston",county:"USA"} }, 

    {last: "Resig", location: {state:"MA",county:"China"} } );

我们可以看出src1中嵌套子对象location:{city:"Boston"},src2中也嵌套子对象location:{state:"MA"},第一个深度拷贝参数为true,合并结果:

 result={name:"John",last:"Resig",

       location:{city:"Boston",state:"MA",county:"China"}}

如果第一个参数boolean为false,则合并结果:

result={name:"John",last:"Resig",location:{state:"MA",county:"China"}} 

2.2 call与apply的用法

通过一个例子简单说明这两个的用法:

var test="Tony";

var myobj={

        test : "Tom"

      };

function doSomething(name, age){

         alert(this.test + ":" + name + age); 

}

doSomething("Tony",23);//普通调用结果Tony:Tony23

doSomething.call(myobj,"Tony",23);//call调用结果Tom:Tony23

doSomething.apply(object,["Tony",23]);//apply调用结果与call相同

2.3 对闭包的理解

2.3.1 一句话解释一下:闭包就是函数的函数,内部函数作为外部函数的返回

通过一个简单example了解一下:

function a() {

   var i = 0;

   function b() {

       alert(++i);

    }

   return b;

}

 

var c = a();

c(); //1

c(); //2

有这个例子可以看出,由于闭包的存在使得函数a返回后,a中的i始终存在,这样每次执行c(),i都是自加1后alert出i的值。

那么我们来想象另一种情况,如果a返回的不是函数b,情况就完全不同了。因为a执行完后,b没有被返回给a的外界,只是被a所引用,而此时a也只会被b引用,因此函数a和b互相引用但又不被外界打扰(被外界引用),函数a和b就会被GC回收。

 

这段代码有两个特点:

 (1)函数b嵌套在函数a内部;

 (2)函数a返回函数b。

这样在执行完var c = a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。

这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

2.3.2 js中的get和set

   var  db = (function() {

   //创建一个隐藏的object, 这个object持有一些数据,从外部是不能访问这个object的

   var  data = {};

   //创建一个函数, 这个函数提供一些访问data的数据的方法

    return function(key, val) {

             if(val === undefined) {

               return  data[key] } //get

            else{ return data[key] = val } //set

    }

 //我们可以调用这个匿名方法

 //返回这个内部函数,它是一个闭包

})();

 

var res1 = db('x'); //返回 undefined

var res2 = db('x',1); //设置data['x']为1

var res3 = db('x');//返回 1

 

var res4 = db('y',2); //设置data['y']为2

var res5 = db('y');//返回 2

 

alert(res1+"-"+res2+"-"+res3+"= "+res4+"-"+res5);

通过上面的例子,我们可以看出闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。

2.4 理解代码:“;(function( $, window, document, undefined ){  //函数体内具体代码 })(jQuery, window,document);”

a)代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。

b)(function ($, window, document, undefined ):声明一个匿名函数,括号中是形参。$是jQuery的简写,添加形参undefined是因为undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined

c){  //函数体内具体代码 })(jQuery,window,document);最后的小括号的意思是立即执行这个匿名函数,括号中是实参。

3 开发插件类型

  jQuery插件包括两种插件,一种是类级别的插件开发,即给jQuery添加全局方法。另一种是对象级别的插件开发,即给jQuery对象添加方法。下面将对这两种开发简单做简单说明

3.1   给jQuery添加全局函数

3.1.1 我们只需要定义如下:

jQuery.fun_1 = function(){

         alert("thisis a first function");

}

jQuery.fun_2 = function(param){

         alert("thefunction take a param,which is "+param);

}

调用方法:jQuery.fun_1();  $.fun_2("test");

 

3.1.2 使用extend扩展

code如下:

jQuery.extend({

         fun_1:function(){

                   alert("thisis a first function");

         },

         fun_2:function(param){

                   alert("thefunction take a param,which is "+param);

         }

})

调用方法:jQuery.fun_1();  $.fun_2("test");

3.1.3 使用命名空间

方法一:

jQuery.newPlugin={

         fun_1:function(){

                   alert("thisis a first function");

         },

         fun_2:function(param){

                   alert("thefunction take a param,which is "+param);

         }

}

方法二:

这个方法使用extend实现带有命名空间的jQuery全局函数,code如下:

$.newPlugin = $.newPlugin || {};

jQuery.extend($.newPlugin,{

         fun_1:function(){

                   alert("thisis a first function");

         },

         fun_2:function(param){

                   alert("thefunction take a param,which is "+param);

         }

})

 

3.2  对象级别的插件开发

方法一:

(function($){

         $.fn.newPlugin= function(){

 

         }

})(jQuery)

方法二:

(function($){

         $.fn.extend({

                   newPlugin:function(){

 

 

                   }

         })

})(jQuery)

 

以上两个方法均使用了匿名函数,其形参是$,在定义完成之后,立即调用并将jQuery对象实参传给它

在下面将以方法一中的方式来做其它特性说明

3.2.1 通过参数options控制插件行为

(function($){

         $.fn.newPlugin= function(options){

                   vardefaults={

                            width:"100px",

                            height:"50px",

                            backgroud:"red",

                            clickEvent:null

                   }

                   //将默认属性和插件初始化的时候设置的属性进行整合,这儿要注意extend的用法

                   $.extend(defaults,options);

         }

})(jQuery)

 

使用方法:$("#div_id").newPlugin({width:"500px"});

 

3.2.2 暴漏一些函数,并定义私有方法

(function($){

         $.fn.newPlugin= function(options){

                   vardefaults={

                            width:"100px",

                            height:"50px",

                            backgroud:"red",

                            clickEvent:null

                   }

                   //将默认属性和插件初始化的时候设置的属性进行整合,这儿要注意extend的用法

                   $.extend(defaults,options);

                   returnthis.each(function(){

                            varts = this;

 

                   })

         }

         //在页面上访问方法:$.fn.newPlugin.fun_test();

         $.fn.newPlugin.fun_test= function(){

                   alert("fun_test");

         }

 

         functionprivateFun(){

                   alert("thisis a private function");

         }

})(jQuery)

 

3.2.3 根据参数设置,给对象添加事件

(function($){

         $.fn.newPlugin= function(options){

                   vardefaults={

                            width:"100px",

                            height:"50px",

                            backgroud:"red",

                            clickEvent:null

                   }

                   //将默认属性和插件初始化的时候设置的属性进行整合,这儿要注意extend的用法

                   $.extend(defaults,options);

                   returnthis.each(function(){

                            varts=this;

                            //给返回对象中的button添加点击事件

                            if(clickEvent){

                                     $(ts).find("button"),bind("click",function(){

                                               clickEvent.call();

                                     })

                            }

                   })

         }

         //在页面上访问方法:$.fn.newPlugin.fun_test();

         $.fn.newPlugin.fun_test= function(){

                   alert("fun_test");

         }

 

         functionprivateFun(){

                   alert("thisis a private function");

         }

})(jQuery)

 

JavaSwing_4.2: JDialog、JOptionPane(对话框) JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。 阅读详情

相关推荐

费斯托SPAN压力传感器的调试

本体为压力传感器,检测气压大小,通过设置参数,在上电上气时对气压进行判断,进而通过自身逻辑的判断,控制传感器的通断,进而控制机械部位的工作与运行;通电之后为如下图所示的样子有三个按键ABEdit键(编辑键、确认键)两步即可轻松连接。

大小曲奇的博客 1万+

300个jQuery插件

概述 jQuery 是继 prototype 之后又一个优秀的 Javascript. 框架。其宗旨是—写更少的代码,做更多的事情。它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及 的,它兼容 CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery 是一个快速的,简洁的 javaScript. 库,

编码改变世界 4526

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1012

150个jQuery插件总有你喜欢的

1. simplyScroll simplyScroll这个jquery插件能够让任意一组元素产生滚动动画效果,可以是自动、手动滚动,水平、垂直方向滚动。此外,它还可以接受动态图片输入通过Flickr供稿或一个本地JSON数据源。 2. Animated Collapsible DIV 为任何DIV层添加Web2.0风格的动画隐藏/显示效果 3. jQuery Pagina

爱生活 6385

磁悬浮轴承控制策略设计及性能对比

摘要:针对高速磁悬浮转子控制问题,本文提出多方案对比分析。建立含陀螺效应的5自由度动力学模型,分析陀螺耦合、质量不平衡等关键挑战。对比四种控制策略:基础PID解耦、交叉反馈+自适应陷波、H∞鲁棒+前馈补偿、滑模控制+观测器,从实时性、鲁棒性等维度评估优劣。推荐采用交叉反馈+H∞+自适应陷波的混合方案,通过内环电流环与外环位置环协同,实现陀螺效应动态解耦和扰动抑制。实施步骤包括系统辨识、控制器设计、硬件部署等,需配合实验验证与参数整定。该方案综合性能最优,适用于高转速、强扰动场景。

技术工作者 1775

TSP、MTSP问题遗传算法详细解读及python实现

写在前面 遗传算法是一种求解NPC问题的启发式算法,属于仿生进化算法族的一员。仿生进化算法是受生物行为启发而发明的智能优化算法,往往是人们发现某种生物的个体虽然行为较为简单,但生物集群通过某种原理却能表现出智能行为。于是不同的人研究不同的生物行为原理,受到启发而发明出新的仿生进化算法。比如免疫优化算法,蚁群算法,模拟退火算法等,这些算法以后也会简单介绍。 本文的主题是遗传算法,该算法也是受到生物行为启发。物竞天择,适者生存,优胜劣汰,是该优化算法的核心思想。笔者在业务中需要用到遗传算法求解TSP问题,但是网

weixin_47675950的博客 9306

JQuery的45个经典插件应用

jQuery滑动门1) Slider Gallery- 这是一个模仿Apple网站的jQuery滑动门产品展示. 这个‘产品展示滑动门’就是一个直线前进的画廊,在有限的空间里面显示产品图片,支持Tab标签的滑动和前进后退按钮的滑动.Live Demo: Here2) Accessible slider- Illustrations和代码显示如何最简单的制作一个滑动门

我的程序世界 8170

手把手教你用EGM96模型校正DEM数据(含在线工具推荐)

本文详细介绍了如何使用EGM96地球重力场模型校正DEM数据中的高程偏差。通过对比WGS84椭球面与大地水准面的差异,解释了校正原理,并提供了从在线工具快速验证到Python脚本批量处理的全流程实战指南,帮助GIS开发者和数据分析师确保高程数据基准一致,提升空间分析精度。

ttt77的博客 1007

1000个jquery插件

1.导航类 (1)Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件。二手图书 二手书 特价书 旧书网 (2)jQuery-Horizontal Accordion具有XBOX360 blade界面风格的水平方向Accordion。二手图书 二手书 特价书 旧书网 (3)jQuery plugin: Accordion用于创建 ...

weixin_30908941的博客 4126

Oracle 11g安装教程(保姆级超详细安装教程)

Oracle详细安装步骤,每一步都配有图例引导 ORACLE是数据库(Oracle服务端)。是连接数据库的客户端(Oracle客户端)。是连接oracle的可视化客户端软件。

2302_81846649的博客 1万+

RK3568 OpenHarmony3.2 蓝牙模块AP6275S适配(已更新)

OpenHarmony3.2 Release版默认是适配AP6275s这款蓝牙芯片的,但是打开蓝牙,发现无法扫描到设备、连接设备。目前平台soc为RK3568,根据项目要求,自定义外设。接下来将以解决bug为目的,学习和记录OpenHarmony平台下蓝牙模块的适配流程。RK809 CLK:32.768KHzUART1M1:与蓝牙模块通讯的串口:GPIO4_B6:GPIO4_A5WAKE_GPIO:未定义,硬件拉高1.8V: 未定义,悬空主要是打开串口,/dev/ttyS1,得到文件描述符fd。

Martian_Jonas的博客 2246

241个jquery插件—jquery插件大全

jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多javascript高手加入其team. jQuery是继prototype之后又一个优秀的Javascrīpt框架。其经典的Slogan是“Write Less, Do more”(写更少的代码,做更多的事情)。jQuery是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器

一克代码的专栏 6万+

【OpenCV-Python】——图像处理基础&读写及显示图像&读写及播放视频&灰度图/彩色图/图像通道操作、运算

在Python中,OpenCV使用NumPy数组存储图像,Numpy是使用Python进行数组计算的软件包,提供强大的N维数组对象,支持复杂的广播功能(数组运算),集成了C/C++和Fortran代码工具,支持线性代数、傅里叶变换和随机数等特性,还可作为通用数据的高效多维容器,如在OpenCV中显示图像。Numpy的知识点见数据处理专栏,主要包括数据类型、创建数组、数组形状、索引切片和迭代、数组运算等。作为初学者,里面可能有总结不全,后续深入学习后会改善文章!下次学习图形用户界面!

weixin_51658186的博客 2084

jQuery Form插件扩展:如何自定义扩展插件功能的终极指南

在当今Web开发中,表单处理是每个网站不可或缺的部分。jQuery Form插件作为一款强大的AJAX表单处理工具,让开发者能够轻松地将传统HTML表单升级为异步提交体验。但你是否知道,这个插件还提供了丰富的扩展机制,让你可以根据项目需求自定义功能?本文将为你揭秘jQuery Form插件的扩展技巧,帮助你打造个性化的表单处理方案。 ## 为什么需要自定义扩展功能? 🚀 jQuery For

gitblog_00073的博客 793

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jquery-cropper扩展开发:如何自定义插件和添加新功能

jQuery Cropper是一个功能强大的图像裁剪插件,它为开发者提供了简单易用的接口来处理图像裁剪需求。如果你想要扩展这个插件,添加自定义功能或创建新的插件,本文将为你提供完整的指南。😊 jquery-cropper是Cropper.js的jQuery包装器,让开发者能够以jQuery的语法和模式来使用这个强大的图像裁剪库。通过理解其内部结构和扩展机制,你可以轻松地为项目添加定制化的图像处

gitblog_00689的博客 466

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jQuery Easing动画效果扩展插件

jQuery Easing动画效果扩展插件:jQuery Easing Plugin。在jQuery文档中我们可以看到,自定义动画函数.animate()有四个参数: params (Options) : 一组包含作为动画属性和终值的样式属性和及其值的集合 duration (String,Number) : (可选) 三种预定速度之一的字符串(”slow”, “normal”, or “

吖然-jronny 647

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jquery插件接口

jquery提供了两个插件接口,一个是jquery.extend,另一个是jquery.fn.extend。(在jquery源码中jquery代表的是全局对象,而jquery.fn =jquery.prototype也就是jquery的原型对象)所以可以这样理解在使用jquery.extend来扩展插件的时候其实是在jquery的命名空间也就是jquery对象本身来扩展。而使用jque...

weixin_30788619的博客 119

jQuery的插件扩展和zepto用法

目录 jQuery插件扩展是基于jQuery去扩展功能 必须先引入jquery jQuery三方插件 Zepto zepto和jQuery的区别 touch模块 fx模块 fx_metods selector jQuery插件扩展是基于jQuery去扩展功能 必须先引入jquery <ul> <li>1</li> <li>2</li> <li>3</li&.

weixin_58139900的博客 796

jQuery的插件操作及开发

jquery的插件是实现某一个功能,jquery并不是一个十全十美的框架,必然有其自身没有涉及到的内容,如果想通过jquery操作没有涉及到的内容,没法直接操作,这时候必须先加载插件,才能使用jq没有涉及到的功能,这个本来没有的功能被插件带来了。 比如:jq没有提供cookie的操作,我们需要搜索或者官网(jquery-cookie)找到它的插件。 插件的用法:基于jquery,所以必须先引入jq...

mikkfe的博客 239

jQuery 插件的使用和写法

1 常用插件 Validation 用于表单验证的插件 From 表单插件 livequery 动态事件绑定插件 jQuery UI 插件 Cookie 管理Cookie的插件 2 插件的编写 (1)插件的分类 封装对象方发的插件 封装全局函数的插件 选择器插件 (2)插件的基本要点 最好以jQuery.[插件名].js命名 (3) // 注意开始为了更好的兼容性,开始前有个分...

书香水墨 231

jQuery——插件

jQuery--插件:简化代码

ys_chy的博客 1139

jQuery:自定义jQuery插件

jQuery:基于jQuery编写的扩展库 1.扩展$的方法: $.extend({ min:function(a,b){...} }) 2.扩展jQuery对象的方法: $.fn.extend({...}) jQuery插件: jquery-validation:表单验证插件 jQuery-UI:UI插件 laydate:日期控件 ...

xpmhhh的博客 365

JQuery插件

目录 自定义插件 $.extend 作用二:扩展JQuery方法 $.fn.extend 第三方插件 使用步骤 使用插件完成表单验证 自定义插件 $.extend 作用一:对象继承 $.extend(对象一,对象二) 对象一包含对象二的所有方法 例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title&gt.

m0_61857264的博客 1255

jQuery插件开发及jQuery.extend函数详解和jQuery.fn与jQuery.prototype区别

一、jQuery插件开发分为两种:  1.类级别: 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法。  开发扩展其方法时使用$.extend方法,即jQuery.extend(object);  $.extend({ add:function(a,b){return a+b;} , minus:function

Joyce的前端日常 430

jquery的插件

什么是插件? 其实就是用来做扩展功能的. jQuery插件库: jq22.com jquery的颜色插件 <style> div { width: 200px; height: 200px; background-color: red; position: relative; top: 0px; left: 0px; } </style> <input type="button" value="按钮" id="bt

m0_59745705的博客 195

jQuery05(插件)

自定义插件 $.extend 对象继承:$.extend(对象1,对象2) //两个对象的继承 var s1={}; var s2={"name":"欧阳干翔","sex":"女"}; console.info(s1.name,s1.sex); console.info(s2.name,s2.sex); //开始继承 $.extend(s1,s2); //继承后 console.info(s1.name

m12120426的博客 802
上一篇: jquery高级应用—扩展插件方法
下一篇: linux shell中的数组使用方法详解
技术宝哥
博客等级 码龄16年 331粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值