基于jquery的插件开发
最近在公司做一个项目,由于后台数据太多需要分页显示,在网上找了很多插件都没有找到合适的分页插件,所有的分页插件始终达不到自己想要的效果。由于这个项目也不是很赶,就在网上查找各种资料,自己写一个基于jquery的分页插件;在接下来的一篇博客中我将详细为大家介绍如何基于jquery书写分页插件,在讲解之前,先给大家介绍一下基于jquery书写插件的相关知识!
jquery插件开发主要有三种方法:
1、通过$.extend()方法来拓展jquery;
2、通过$.fn向jquery添加新的方法;这次在分页插件中就用到了该方法,为jQuery添加新的方法。
3、通过$.widget()应用jQuery UI的部件工厂方式创建;不过第三种方法不常用,我们经常使用的就是第一和第二这两个方法,主要原因还是因为相对于第三个方法来说前两个简单一点,好理解。
$.extend是最简单的一种,只是在jquery基础上拓展(添加)新方法,只需要用$.functionName就可以调用,也就是说一处定义多处调用;给大家举个例子看看,我们就定义一下输出函数吧
$.extend({
console: function(str) {
console.log('hello,Welcome to use the console method defined based on jquery,'+str);
}
})
$.console(); //调用
$.extend
运行结果如下:
但是这种方法无法利用jquery选择器的优点以及便利性,所以我们还需要学习了解第二种方法$.fn。为什么$.fn定义的方法就可以使用dom节点选择器对象获取这些方法呢,那是因为jQuery
内部定义了一个jQuery.fn
对象,查看jQuery
源码可以发现jQuery.fn=jQuery.prototype
,也就是说jQuery.fn
对象是jQuery
的原型对象,jQuery
的DOM
操作方法都在jQuery.fn
对象上定义的,然后jQuery
对象就可以通过原型继承这些方法。
我们先使用$.fn定义一个最简单的改变字体颜色的小插件,代码如下:
$.fn.changeColor = function(color){
this.css('color',color);
}
$.fn.changeColor
在这边定义好插件之后就可以调用了,例如;$('domName').changeColor('red')就可以改变该DOM节点的额字体颜色为红色;
但常常很多时候我们需要链式调用相关的方法,这就需要我们对上面的方法做以修改,只需要在上面代码方法的末尾加上一段代码就好
return this;
这样就可以链式调用,例如$("p").changeColor("red").addClass("red-color");
但是很多时候js
库都会使用$
符号,虽然jQuery
可以使用jQuery.noConflict()
方法交出$符号的使用权,但是如果定义插件的时候,使用$.fn
对象来定义的,那么这些插件使用的时候就会受到其它使用$
变量的js
库的影响。对于这种情况,我们可以使用立即执行函数通过传参的方式封装插件。形式如下:
(function($){
$.fn.changeColor = function(colorStr){
this.css("color",colorStr);
return this;
}
}(jQuery));
防止$污染
在上面的插件方法中我们可以看到使用了传递参数,但是很多时候我们都使用传递对象的方式传递参数这个时候就用到了$.extend方法,这个方法在这里的用法就是合并两个对象,即把后面一个对象的存在的属性值赋值给第一个对象,具体参考这里,给大家附上相关代码以供参考
(function($){ $.fn.changeColor = function(option){
var defaultSetting = { colorStr:"green",fontSize:12};
var setting = $.extend(defaultSetting,option);
this.css("color",setting.colorStr).css("fontSize",setting.fontSize+"px");
return this;
}
}(jQuery));
说道这里基于jquery开发插件的方法已经介绍完毕,下面一篇博客我会给大家介绍怎么基于jquery开发一款分页插件。
在查看的时候如果发现什么问题,欢迎大家在评论区提出来,我们相互讨论
基于jquery的插件开发的更多相关文章
- 源码来袭!!!基于jquery的ajax分页插件(demo+源码)
前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客 ...
- 基于JQuery的获取鼠标进入和离开容器方向的实现
做动画时,需要判断鼠标进入和退出容器的方向.网上找到的基于JQuery的实现方法,用函数封装了一下,写了一个示例.注意绑定鼠标事件用的是on(),所以JQuery版本需高于1.7. <!DOCT ...
- 基于jQuery的Validate表单验证
表单验证可以说在前端开发工作中是无处不在的~ 有数据,有登录,有表单, 都需要前端验证~~ 而我工作中用到最多的就是基于基于jQuery的Validate表单验证~ 就向下面这样~ 因为今天有个朋 ...
- 基于jQuery的自适应图片左右切换
效果预览:http://hovertree.com/code/jquery/smjv6d0n.htm 基于jQuery编写的横向自适应幻灯片切换特效 全屏自适应jquery焦点图切换特效,在IE6这个 ...
- 使用 Sticky-Kit 实现基于 jQuery 的元素固定效果
元素固定效果在网页中应用得很多,比较常见的使用场景有改进导航,显示广告.Sticky-Kit 是一个非常方便的 jQuery 插件,简化了创建/管理粘元素,有复杂的使用功能.这些功能包括:处理多个固定 ...
- 基于jquery的bootstrap在线文本编辑器插件Summernote
Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Op ...
- 模仿iframe框架,由分隔栏动态改变左右两侧div大小———基于jQuery
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- 基于jquery fly插件实现加入购物车抛物线动画效果,jquery.fly.js
在购物网站中,加入购物车的功能是必须的功能,有的网站在用户点击加入购物车按钮时,就会出现该商品从点击出以抛物线的动画相似加入购物车,这个功能看起来非常炫,对用户体验也有一定的提高.下面介绍基于jque ...
- 模仿win10样式,基于jquery的时间控件
工作需要,写了一个基于jquery的时间控件,仿win10系统时间控件格式. 目前基本功能都有了,但时间格式只实现少数,但由于结构设计已经充分优化,填充起来非常容易. 这个控件相对网上其他的时间控件, ...
随机推荐
- 小白——java基础之数据类型
PS:此文章为小白提供,大佬请绕道!!!! 首先特别感谢大才哥给我提供这个平台,未来我希望把java这个版块的内容补全. 今天要讲的是数据类型,最最最基础的内容~ java标识符.数据类型.关键字 开 ...
- windows共享虚拟机ubuntu目录
1)安装 sudo apt-get install samba 2)配置文件vi /etc/samba/smb.conf 添加如下 3)启动服务 sudo service smbd start 4)w ...
- Android查缺补漏(线程篇)-- AsyncTask的使用及原理详细分析
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8515304.html 一.AsyncTask的使用 AsyncTask是一种轻 ...
- Docker 入门之swarm部署web应用
笔者近期在利用的docker搭建一个swarm集群,目前的应用还是入门级的,读者可自行根据自己的需要修改自己需要部署的应用,今天笔者介绍的是一个web应用的swarm集群的搭建.看这篇文章之前,我希望 ...
- jquery中ajax序列化提交form表单的几种方法。
一,ajax主流的方法 $.ajax({ type: 'post', url: 'your url', data: $("form").serialize(), success: ...
- jquery 获取上传图片的大小(或者本张图片的其它属性)
<input type="file" name="upload" style="display:none;" src="${ ...
- RobotFramework下的http接口自动化Set Request Body 关键字的使用
Set Request Body关键字用来设置http 请求时的body 信息,尤其是在post 请求时,经常需要用到这个关键字. 该关键字接收一个参数,[ body ] 示例1:登录博客园(http ...
- 【BZOJ4407】于神之怒加强版(莫比乌斯反演)
[BZOJ4407]于神之怒加强版(莫比乌斯反演) 题面 BZOJ 求: \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)^k\] 题解 根据惯用套路 把公约数提出来 \[\sum ...
- UVA10692:Huge Mods
题面 传送门 题意 输入正整数a1,a2,a3..an和模m,求a1^a2^...^an mod m Sol 首先有\[ a^b\equiv \begin{cases} a^{b\%\phi(p)}~ ...
- 如何通过Spring Boot配置动态数据源访问多个数据库
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...