使表格的标题列可左右拉伸jquery插件封装


Posted in Javascript onNovember 24, 2014

插件名称命名为:jquery.tableresize.js,代码如下:

/*

Writen by mlcactus, 2014-11-24

这是我封装的一个jquery插件,能够使table的各列可以左右拉伸,从而使宽度变小或变大

用法:

单个table:$("#table_id").tableresize();    

页面所有table:$("table").tableresize();

*/

(function ($) {

    $.fn.tableresize = function () {

        var _document = $("body");

        $(this).each(function () {

            if (!$.tableresize) {

                $.tableresize = {};

            }

            var _table = $(this);

            //设定ID

            var id = _table.attr("id") || "tableresize_" + (Math.random() * 100000).toFixed(0).toString();

            var tr = _table.find("tr").first(), ths = tr.children(), _firstth = ths.first();

            //设定临时变量存放对象

            var cobjs = $.tableresize[id] = {};

            cobjs._currentObj = null, cobjs._currentLeft = null;

            ths.mousemove(function (e) {

                var _this = $(this);

                var left = _this.offset().left, top = _this.offset().top, width = _this.width(), height = _this.height(), right = left + width, bottom = top + height, clientX = e.clientX, clientY = e.clientY;

                var leftside = !_firstth.is(_this) && Math.abs(left - clientX) <= 5, rightside = Math.abs(right - clientX) <= 5;

                if (cobjs._currentLeft || clientY > top && clientY < bottom && (leftside || rightside)) {

                    _document.css("cursor", "e-resize");

                    if (!cobjs._currentLeft) {

                        if (leftside) {

                            cobjs._currentObj = _this.prev();

                        }

                        else {

                            cobjs._currentObj = _this;

                        }

                    }

                }

                else {

                    cobjs._currentObj = null;

                }

            });

            ths.mouseout(function (e) {

                if (!cobjs._currentLeft) {

                    cobjs._currentObj = null;

                    _document.css("cursor", "auto");

                }

            });

            _document.mousedown(function (e) {

                if (cobjs._currentObj) {

                    cobjs._currentLeft = e.clientX;

                }

                else {

                    cobjs._currentLeft = null;

                }

            });

            _document.mouseup(function (e) {

                if (cobjs._currentLeft) {

                    cobjs._currentObj.width(cobjs._currentObj.width() + (e.clientX - cobjs._currentLeft));

                }

                cobjs._currentObj = null;

                cobjs._currentLeft = null;

                _document.css("cursor", "auto");

            });

        });

    };

})(jQuery);  

页面代码为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

    <style type="text/css" >

        td{ text-align:center;}

    </style>

    <script type="text/javascript" src="script/jquery-1.10.2.js"></script>

    <script type="text/javascript" src="script/jquery.tableresize.js"></script>

    <script type="text/javascript">

        $(document).ready(function () {

            //使两张table同时支持左右拉伸

            $("table").tableresize();

        });

    </script>

</head>

<body>

    表格1<br/>

    <table cellspacing="0" border="1" style="border-collapse:collapse;" rules="all">

        <tbody><tr>

            <td style="width:200px;">ID</td><td style="width:200px;">名字</td><td style="width:200px;">年纪</td><td style="width:200px;">地址</td><td style="width:200px;">电话</td>

        </tr><tr>

            <td>22</td><td>Name:44</td><td>Age:23</td><td>Address:47</td><td>Phone:15</td>

        </tr><tr>

            <td>28</td><td>Name:42</td><td>Age:68</td><td>Address:30</td><td>Phone:50</td>

        </tr><tr>

            <td>29</td><td>Name:63</td><td>Age:48</td><td>Address:90</td><td>Phone:76</td>

        </tr>

    </tbody>

    </table>

    <br/>表格2<br/>

    <table cellspacing="0" border="1" style="border-collapse:collapse;" rules="all">

        <tbody><tr>

            <td style="width:200px;">ID</td><td style="width:200px;">名字</td><td style="width:200px;">年纪</td><td style="width:200px;">地址</td><td style="width:200px;">电话</td>

        </tr><tr>

            <td>22</td><td>Name:44</td><td>Age:23</td><td>Address:47</td><td>Phone:15</td>

        </tr><tr>

            <td>28</td><td>Name:42</td><td>Age:68</td><td>Address:30</td><td>Phone:50</td>

        </tr>

    </tbody></table>

</body>

</html>
Javascript 相关文章推荐
在JavaScript中实现命名空间
Nov 23 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
May 07 Javascript
js+div实现图片滚动效果代码
Feb 10 Javascript
js中直接声明一个对象的方法
Aug 10 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
Jun 23 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
Jun 13 Javascript
jQuery实现frame之间互通的方法
Jun 26 jQuery
vue开发环境配置跨域的方法步骤
Jan 16 Javascript
详解Js里的for…in和for…of的用法
Mar 28 Javascript
vue+element实现打印页面功能
May 20 Javascript
JS实现点星星消除小游戏
Mar 24 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
jQuery实现隔行背景色变色
Nov 24 #Javascript
jQuery实现统计复选框选中数量
Nov 24 #Javascript
基于jQuery实现文本框缩放以及上下移动功能
Nov 24 #Javascript
基于jQuery实现复选框的全选 全不选 反选功能
Nov 24 #Javascript
基于jQuery实现下拉框
Nov 24 #Javascript
基于jQuery实现表单提交验证
Nov 24 #Javascript
jQuery简单实现网页选项卡特效
Nov 24 #Javascript
You might like
德劲1102收音机的打理维修案例
2021/03/02 无线电
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
php 数据结构之链表队列
2017/10/17 PHP
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
python3 实现的人人影视网站自动签到
2016/06/19 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
Opencv求取连通区域重心实例
2020/06/04 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
应届生面试求职信
2014/07/02 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
南湾猴岛导游词
2015/02/09 职场文书
承诺保证书格式
2015/02/28 职场文书
消防演习通知
2015/04/25 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers