怎么用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=>
        <title></title>
        <script src=></script>
        <script src=></script>
        <style>
            *-sizing: border--webkit-box-sizing: border--moz-box-sizing: border----</style>
    </head>
    <body>
        <table id= >
            <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></script>
    </body>
</html>

设置新的属性参数

        <script>=, 
                    oddColor: ,  
                    activeColor: , 
                    changeFlag: ,     </script>

//此处options = 也可以不写


本文转自lzwxx 51CTO博客,原文链接:http://blog.51cto.com/13064681/1942701

相关文章
|
5月前
|
前端开发 JavaScript Java
怎么使用javascript实现类的功能
怎么使用javascript实现类的功能
15 0
|
11月前
|
缓存 JavaScript 安全
快速入门nest.js(6/10)--原理细节
依赖注入 我们将依赖的实例委托给IOC容器,在这里,这个IOC容器就是NestJS运行时系统本身,NestJS在这里处理所有繁重的工作,而不是尝试自己实现依赖注入。本质上,当我们“ask”类构造函数中的依赖项时,NestJS处理并检索返回给我们的对象,以及它可能需要的任何依赖项等等。
160 0
|
11月前
|
JavaScript 测试技术 API
深入解析 Vue 的热更新原理,尤大是如何巧用源码中的细节?
大家都用过 Vue-CLI 创建 vue 应用,在开发的时候我们修改了 vue 文件,保存了文件,浏览器上就自动更新出我们写的组件内容,非常的顺滑流畅,大大提高了开发效率。想知道这背后是怎么实现的吗,其实代码并不复杂。
|
JavaScript
js基础笔记学习149-封装函数1
js基础笔记学习149-封装函数1
46 0
js基础笔记学习149-封装函数1
|
JavaScript
js基础笔记学习150-封装函数2
js基础笔记学习150-封装函数2
34 0
js基础笔记学习150-封装函数2
|
JavaScript 前端开发 开发工具
Javascript的进阶版--VUE,使用vue载入基本使用结构,封装过的js更好用 刘金玉编程
Javascript的进阶版--VUE,使用vue载入基本使用结构,封装过的js更好用 刘金玉编程
120 0
Javascript的进阶版--VUE,使用vue载入基本使用结构,封装过的js更好用 刘金玉编程
|
JavaScript
Vue项目实操cookie相关操作封装
作者主页:https://www.couragesteak.com/
|
JavaScript 前端开发
jQuery入门第五章(JQ事件类型补充 )
jQuery入门第五章(JQ事件类型补充 )
125 0
|
JavaScript 前端开发
组件库源码中这些写法你掌握了吗?(下)
前沿:这几年,前端的组件库的演变迅速,社区脱颖而出不少优秀的开源组件库,包括element-ui、Ant design、IView等等,这些开源组件库源码中其实有很多值得我们学习的地方,无论是设计思路,代码风格等等,可以通过参考源码中一些写法,引用到我们平时的项目中去
131 0
组件库源码中这些写法你掌握了吗?(下)
|
存储 JavaScript 前端开发
【JavaScript框架封装】使用原生js封装的类似于JQuery的框架及核心源码分享(多文件版本)
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81156261 ...
1683 0