怎么用jq封装插件
怎么用jq封装插件
以隔行变色为例
实现原理:1.找到表格的奇偶行,然后添加不同的class,激活行高亮显示也很简单,只要判断mouseover事件,然后添加一个class,mouseout的时候,再移除
class就行;
2.不用class,直接改变background属性;
直接开干,这里用第二种方法。
第一步: 模板
jq有一个基本框架,直接搬过来呗
(function($){
$.fn.yourName = function(options){
//各种属性、参数
}
var options = $.extend(defaults, options);
return this.each(function(){
//插件实现代码
});
};
})(jQuery);
第二步: 套东西进去
1.命名
2.有哪些参数、属性,这里就是要结合功能来考虑了
evenColor (偶数行颜色) oddColor(奇数行颜色) activeColor(激活行颜色) changeFlag(是否开启隔行变色)oldColor (保存原来的颜色);
(function ($) {
$.fn.tableUI = function ( options ) {
var defaults = {
evenColor: '#dddddd', //偶数行颜色
oddColor: '#ffffff', //奇数行颜色
activeColor: '#09f', //激活行颜色
changeFlag: true, //是否开启隔行变色
oldColor: '' //保存原来颜色
}
var options = $.extend( defaults, options );
return this.each(function () {
//功能代码
})
}
})(jQuery);
此处重点:
var options = $.extend( defaults, options );
合并多个对象为一个,就是如果你在调用的时候写了新的参数,就用你新的参数,如果没有写,就用默认的参数。
现在就是完善功能代码
(function ($) {
$.fn.tableUI = function ( options ) {
var defaults = {
evenColor: '#dddddd', //偶数行颜色
oddColor: '#ffffff', //奇数行颜色
activeColor: '#09f', //激活行颜色
changeFlag: true, //是否开启隔行变色
oldColor: ''
}
var options = $.extend( defaults, options );
return this.each(function () {
var thisTable = $(this);
if ( options.changeFlag ) {
//奇偶行颜色
$(thisTable).find('tr:even').css( 'background', options.evenColor );
$(thisTable).find('tr:odd').css( 'background', options.oddColor );
//激活行颜色
$(thisTable).find('tr').bind('mouseover', function () {
//保存原来的颜色,以便于移出时恢复
options.oldColor = $(this).css('background');
$(this).css( 'background', options.activeColor );
});
$(thisTable).find('tr').bind('mouseout', function () {
$(this).css( 'background', options.oldColor );
})
}
})
}
})(jQuery);
到这里,就基本完成了,最后在插件上方,写上插件的名称、版本号、完成日期、作者,作者的联系方式……等等,因为只有这样才能显的这个插件够专业。
/*
* tableUI 0.1
* Copyright (c) 梦幻飞雪 http://www.cnblogs.com/wangyihong/
* Date: 2017-06-28
* 使用tableUI可以方便地将表格提示使用体验。先提供的功能有奇偶行颜色交替,鼠标移上高亮显示
*/
(function ($) {
$.fn.tableUI = function ( options ) {
var defaults = {
evenColor: '#dddddd', //偶数行颜色
oddColor: '#ffffff', //奇数行颜色
activeColor: '#09f', //激活行颜色
changeFlag: true, //是否开启隔行变色
oldColor: ''
}
var options = $.extend( defaults, options );
return this.each(function () {
var thisTable = $(this);
if ( options.changeFlag ) {
//奇偶行颜色
$(thisTable).find('tr:even').css( 'background', options.evenColor );
$(thisTable).find('tr:odd').css( 'background', options.oddColor );
//激活行颜色
$(thisTable).find('tr').bind('mouseover', function () {
//保存原来的颜色,以便于移出时恢复
options.oldColor = $(this).css('background');
$(this).css( 'background', options.activeColor );
});
$(thisTable).find('tr').bind('mouseout', function () {
$(this).css( 'background', options.oldColor );
})
}
})
}
})(jQuery);
ok,大功告成,就差验证使用了
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src='./js/jquery.min.js'></script>
<script src='./js/tableUI.js'></script>
<style>
*{
padding: ;
margin: ;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
}
#table {
width: 800px;
margin: 50px auto;
display: block;
border-collapse:collapse;
}
#table tr {
height: 50px;
font-size: 20px;
}
#table tr td, #table tr th {
border: 1px solid #;
width: 200px;
text-align: center;
}
</style>
</head>
<body>
<table id='table' >
<tr>
<th>姓名</th>
<th>年龄</th>
<th>专业</th>
<th>班级</th>
</tr>
<tr>
<td>张三</td>
<td></td>
<td>计算机</td>
<td></td>
</tr>
<tr>
<td>张三</td>
<td></td>
<td>计算机</td>
<td></td>
</tr>
<tr>
<td>张三</td>
<td></td>
<td>计算机</td>
<td></td>
</tr>
<tr>
<td>张三</td>
<td></td>
<td>计算机</td>
<td></td>
</tr>
<tr>
<td>张三</td>
<td></td>
<td>计算机</td>
<td></td>
</tr>
<tr>
<td>张三</td>
<td></td>
<td>计算机</td>
<td></td>
</tr>
<tr>
<td>张三</td>
<td></td>
<td>计算机</td>
<td></td>
</tr>
</table>
//插件使用
<script>
$("#table").tableUI(); //默认的属性参数
</script>
</body>
</html>
设置新的属性参数
<script>
$("#table").tableUI(
options = {
evenColor: 'blue', //偶数行颜色
oddColor: 'green', //奇数行颜色
activeColor: 'red', //激活行颜色
changeFlag: true, //是否开启隔行变色
});
</script> //此处options = 也可以不写
怎么用jq封装插件的更多相关文章
- jq封装插件
$.extend()拓展方法: $(function(){ $.extend({ money:function(){ alert("我要努力赚钱") }, money:functi ...
- jq封装插件,简单dome
(function($) { $.fn.extend({ bold: function() { this.css({ fontWeight: "bold", color: 'red ...
- jQuery框架-3.jQuery自定义封装插件和第三方插件
一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend Merge th ...
- jq分页插件
jq分页插件 http://www.zhangxinxu.com/jq/pagination_zh/ html --------------- <tbody id="hiddenres ...
- vue封装插件并发布到npm上
vue封装插件并发布到npm上 项目初始化 首先,要创建项目,封装vue的插件用webpack-simple很合适,vue init webpack-simple 项目名称此命令创建我们的项目的目录, ...
- ***使用jQuery去封装插件(组件化、模块化的思想),即扩展方法
如何使用jQuery去封装插件,区分扩展全局方法与扩展一个普通的jQuery实例对象的方法 1.给全局对象扩展方法:①$.方法 = function(参数可加可不加){} ②使用:$.方法(有参数的 ...
- jq封装选项卡写法
jq普通选项卡写法: var tabTag=$('#tabon'); var tabon=tabTag.find('li');//菜单栏 var tabCon=$(".hidden" ...
- 封装插件并发布到npm的历程
1.封装插件 2.使用webpack打包的时候发生了很多问题 3.过程很反复 4.但最终还是发布成功了
- JQ封装图片预加载插件
我们知道,图片的加载,特别是资源较大的图片,加载相当耗费时间.为了提高用户体验,不得不使用图片预加载技术来提前加载,以提高用户在浏览时的流畅度. 先来弄明白图片的懒加载和预加载的不同: 1)概念:懒加 ...
随机推荐
- C# 文件上传(可以多文件上传)
一.前端搭建 1.前端用到js:uploadify(下载地址:http://www.uploadify.com/download/).layer (下载地址:http://layer.layui.co ...
- Maven学习-项目对象模型
POM包含了四类描述和配置: 项目总体信息:它包含了一个项目的名称,项目的URL,发起组织,以及项目的开发者贡献者列表和许可证. 构建设置:在这一部分,我们自定义Maven构建的默认行为.我们可以更改 ...
- 初识数据库连接池开源框架Druid
Druid是阿里巴巴的一个数据库连接池开源框架,准确来说它不仅仅包括数据库连接池这么简单,它还提供强大的监控和扩展功能.本文仅仅是在不采用Spring框架对Druid的窥探,采用目前最新版本druid ...
- int类型和byte类型的强制类型转换
今天在读<Java网络编程>这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方.这个地方有点细节,不过就应该把这种细节把握住. 情况是这样的,讲到In ...
- Kotlin入门第三课:数据类型
前文链接: Kotlin学习第一课:从对比Java开始 Kotlin入门第二课:集合操作 初次尝试用Kotlin实现Android项目 Kotlin的数据类型与Java类似,因此这篇文章主要看Kotl ...
- spring异常处理器
一.本篇文章旨在讨论异常处理器: 1.因为异常处理器在实战中通常用来处理开发人员自定义的运行时异常,所以如果要了解如何自定义运行时异常,请自行搜索相关资料. 2.本文的demo用IndexOutOfB ...
- Range Modular Queries
Range Modular Queries 题意 给出一个数列,q个查询,问查询区间内有几个数 a[i] % x == y. 分析 其实裸的分块就能过了,跑的还特别快. 这里分块的作用就是排序. 在x ...
- 每天一个JS 小demo之日历制作。主要知识点:日期函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)
欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) 一.方案简要 首先通过对开发方案的仔细研究(实时监控.流媒体.直播流方案的数据源-->协议转换-->服务器--&g ...
- 关于Eclipse+SVN 开发配置
入职快一个月,学的比较慢,但学的东西很多,受益匪浅.有时候真正意义上,感受到:代码使我快乐,我爱编程. 好久没有开笔,不知道说些什么,也不知道应该说什么. 但总觉得有些东西,很想说出来,不用理会他人的 ...