基于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 Web项目缺少jsp、servlet jar包
1.错误描述 Caused by:java.lang.ClassNotFoundException:javax.servlet.jsp.PageContent 2.错误原因 缺少有关的js ...
- Flex中的DataGrid报错(一)
1.错误描述 此行的多个标记: -holeNum -1105: 赋值的目标必须是引用值. 2.错误原因 detailWindow.holeNum.toString() = &q ...
- android小程序之幸运菜谱
android小程序之幸运菜谱 前言:刚刚结束短短5天的android公开课程,收获不少,写下来记录一下吧!(因为学校校企公开课的缘故才偶然接触的android,所以只学了这几天,不喜勿喷) 一开始得 ...
- each遍历的用法
- Kettle根据时间戳同步数据实现
1 Kettle总体步骤 由于Kettle自身的特殊性以及在多个步骤中kettle自身处理数据库事务的特殊性,尝试了很多种方案,最终确定暂使用如下方案. 1.使用此方案可以解决kettle本身数据库事 ...
- BZOJ 5039: [Jsoi2014]序列维护
5039: [Jsoi2014]序列维护 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 282 Solved: 169[Submit][Status ...
- 创建元素节点createElement
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- java保留小数点后位数以及输出反转数字
//方法一double b = 8.0/3.0; //与C语言不同,此处8.0和8有所区分 String format = String.format("%.2f,b"); //表 ...
- 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)
[BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...
- CF#462 div1 D:A Creative Cutout
CF#462 div1 D:A Creative Cutout 题目大意: 原网址戳我! 题目大意: 在网格上任选一个点作为圆中心,然后以其为圆心画\(m\)个圆. 其中第\(k\)个圆的半径为\(\ ...