怎么用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: 0;
                margin: 0;
                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 #666;
                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>23</td>
                <td>计算机</td>
                <td>1</td>
            </tr>
            <tr>
                <td>张三</td>
                <td>23</td>
                <td>计算机</td>
                <td>1</td>
            </tr>
            <tr>
                <td>张三</td>
                <td>23</td>
                <td>计算机</td>
                <td>1</td>
            </tr>
            <tr>
                <td>张三</td>
                <td>23</td>
                <td>计算机</td>
                <td>1</td>
            </tr>
            <tr>
                <td>张三</td>
                <td>23</td>
                <td>计算机</td>
                <td>1</td>
            </tr>
            <tr>
                <td>张三</td>
                <td>23</td>
                <td>计算机</td>
                <td>1</td>
            </tr>
            <tr>
                <td>张三</td>
                <td>23</td>
                <td>计算机</td>
                <td>1</td>
            </tr>
        </table>
        <script>
            $("#table").tableUI();  //默认的属性参数
        </script>
    </body>
</html>

设置新的属性参数

        <script>
            $("#table").tableUI(
                options = {
                    evenColor: ‘blue‘, //偶数行颜色
                    oddColor: ‘green‘,  //奇数行颜色
                    activeColor: ‘red‘, //激活行颜色
                    changeFlag: true,     //是否开启隔行变色
                });
        </script>

//此处options = 也可以不写

时间: 2024-08-03 11:17:05

怎么用jq封装插件的相关文章

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

一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend   Merge the contents of two or more objects together into the first object.把两个或者多个对象合并到第一个对象当中: jQuery.fn.extend   Merge the contents of an object onto the jQue

jq滚动插件jquery.nicescroll+定位到底部

<pre name="code" class="html"><!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compat

vue封装插件并发布到npm上

vue封装插件并发布到npm上 项目初始化 首先,要创建项目,封装vue的插件用webpack-simple很合适,vue init webpack-simple 项目名称此命令创建我们的项目的目录,创建文件夹和文件,最后结构是这样的  然后根据需求,实现具体功能,这里我封装了一个轮播图组件mini-sliders,主要功能写在lib/slider.vue组件中 功能写好后,我们要写index.js来封装组件 import VueComment from './VueComment.vue' c

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

1.封装插件 2.使用webpack打包的时候发生了很多问题 3.过程很反复 4.但最终还是发布成功了 原文地址:https://www.cnblogs.com/zhouyideboke/p/10953705.html

关于JQ分页插件的封装

一.简介 剧情需要,找遍网络没找到合适的,由此想自己封装一个,主要是思路问题,理清思路很重要,这里我的思路采用了一个稍微简单的. 二.代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>分页插件</title> </head> <style type="text/css"> .box{ disp

jQ封装自己需要的插件(两种方法)

1.(function($){ //($)防止$冲突 $.fn.extend({ //jquery方法 check: function() { return this.each(function() { this.checked = true; }); }, uncheck: function() { return this.each(function() { this.checked = false; }); } }); })(jQuery) 2.(function($){ //防止$冲突 j

自写原生jq滚轮插件

自己仿bootStarp插件写的,思路局限,仅供交流,有好的建议还请不吝赐教//使用方法:                //html:需要ul>li>a的模式,a需要类名,需要设置page-scroll属性,page-scroll属性需要1以数字结尾,容器为所变化的最大页面                //js:请传入一个事件对象,对象需要传入属性:pageAnchorName(锚点id)及contianer(容器类)                //下标jq对象传入$navIndex属

js jq封装ajax方法

json文本格式 { "userInfo":[ {name:"admin",password:"123"}, {name:"admin1",password:"123"} ] } js: window.onload=function(){ var txtName=..; var txtPwd=..; var url="Login.aspx?name="+txtName.value+&qu

JQ+rotate插件实现图片旋转,兼容IE7+ \ CHROME等浏览器

插件:/jquery.rotate.min.js HTML代码: <ul class="c" id="ts_pro_list">   <li><a class="ts_pro_1" href="#" target="_blank" title="航班延误险" otitle="航班延误险-特色保险" otype="button&q