使表格的标题列可左右拉伸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 相关文章推荐
JQuery 常用方法和事件详细介绍
Apr 18 Javascript
不使用浏览器运行javascript代码的方法
Jul 24 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
Dec 12 Javascript
jQuery插件slides实现无缝轮播图特效
Apr 17 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 Javascript
VUE页面中加载外部HTML的示例代码
Sep 20 Javascript
简单的Vue异步组件实例Demo
Dec 27 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
js prototype深入理解及应用实例分析
Nov 25 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
Dec 23 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
jQuery简单实现网页选项卡特效
Nov 24 #Javascript
You might like
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
django连接oracle时setting 配置方法
2019/08/29 Python
python 魔法函数实例及解析
2019/09/25 Python
python 实现两个线程交替执行
2020/05/02 Python
Python正则表达式如何匹配中文
2020/05/27 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
装修施工安全责任书
2014/07/24 职场文书
安全目标管理责任书
2014/07/25 职场文书
加强作风建设心得体会
2014/10/22 职场文书
招标保密承诺书
2015/01/20 职场文书
辞职信格式模板
2015/02/27 职场文书
灵魂歌王观后感
2015/06/17 职场文书
演讲比赛主持词
2015/06/29 职场文书
运动会新闻稿
2015/07/17 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python