怎么用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封装插件的更多相关文章

  1. jq封装插件

    $.extend()拓展方法: $(function(){ $.extend({ money:function(){ alert("我要努力赚钱") }, money:functi ...

  2. jq封装插件,简单dome

    (function($) { $.fn.extend({ bold: function() { this.css({ fontWeight: "bold", color: 'red ...

  3. jQuery框架-3.jQuery自定义封装插件和第三方插件

    一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend   Merge th ...

  4. jq分页插件

    jq分页插件 http://www.zhangxinxu.com/jq/pagination_zh/ html --------------- <tbody id="hiddenres ...

  5. vue封装插件并发布到npm上

    vue封装插件并发布到npm上 项目初始化 首先,要创建项目,封装vue的插件用webpack-simple很合适,vue init webpack-simple 项目名称此命令创建我们的项目的目录, ...

  6. ***使用jQuery去封装插件(组件化、模块化的思想),即扩展方法

    如何使用jQuery去封装插件,区分扩展全局方法与扩展一个普通的jQuery实例对象的方法 1.给全局对象扩展方法:①$.方法 = function(参数可加可不加){}  ②使用:$.方法(有参数的 ...

  7. jq封装选项卡写法

    jq普通选项卡写法: var tabTag=$('#tabon'); var tabon=tabTag.find('li');//菜单栏 var tabCon=$(".hidden" ...

  8. 封装插件并发布到npm的历程

    1.封装插件 2.使用webpack打包的时候发生了很多问题 3.过程很反复 4.但最终还是发布成功了

  9. JQ封装图片预加载插件

    我们知道,图片的加载,特别是资源较大的图片,加载相当耗费时间.为了提高用户体验,不得不使用图片预加载技术来提前加载,以提高用户在浏览时的流畅度. 先来弄明白图片的懒加载和预加载的不同: 1)概念:懒加 ...

随机推荐

  1. OC—Setter、Getter

    一.本篇以Setter和Getter 来进行成员变量的赋值. 二.Setter 与 Getter 1. 命名规范 为对象中的某个实例变量赋值的方法称为修改方法,用来修改对象的状态这类修改方法称为set ...

  2. 转:MySQL表名不区分大小写

    在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 一.linux中mysql大小写详情: 1.数据库名严格区分大小写 2.表名严格 ...

  3. 抓包工具 Charles 使用心得

    前言 虽然实习工作还没有着落,但学习还是要继续的嘛,今天就来学习使用下 Mac 下截取网络封包的工具:Charles. 我想,如果你是个善于利用搜索引擎的人,那么在 Google 中输入「Charle ...

  4. DropDownList如何绑定DataTable,如何绑定DataSet

    dpDnUpMenu是我定义的DropDownList控件 如果直接使用下面的方式,则会出现如下错误 dpDnUpMenu.DataSource = menu_tbBll.GetPID() dpDnU ...

  5. swift学习 - collectionView

    swift CollectionView学习 效果图: 源码: ContModel.swift import UIKit class ContModel: NSObject { var title:S ...

  6. 11.Java 加解密技术系列之 总结

    Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的 ...

  7. R绘图字体解决方案(转)

    COS论坛里面经常会遇到的一个问题就是绘图时中文字体怎么解决.最初,一个流行的方法是使用family = "GB1",但一般这样做出来的图比较难看,而且并没有完全解决问题.后来发现 ...

  8. iOS安全攻防之结构体保护使用

    Objective-C 代码很容易被 hook,因此需要对一些重要的业务逻辑进行保护,可以改用结构体的形式,把函数名隐藏在结构体里,以函数指针成员的形式存储.这样编译后只留了下地址,去掉了名字和参数表 ...

  9. grant all赋权后mysql.user表权限字段还是N,但能登录和新建表

    grant all赋权后mysql.user表权限字段还是N,但能登录和新建表 grant all privileges on linuxeye.* to linuxeye@'localhost' i ...

  10. 【JAVAWEB学习笔记】网上商城实战3:购物模块和订单模块

    网上商城实战3 今日任务 完成购物模块的功能 完成订单模块的功能 1.1      购物模块: 1.1.1    功能演示: 商品详情: 购物车模块: 1.1.2    代码实现: 1.在商品详情的页 ...