使表格的标题列可左右拉伸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 手动给表增加数据的小例子
Jul 10 Javascript
jQuery实现仿Google首页拖动效果的方法
May 04 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
JavaScript简单计算人的年龄示例
Apr 15 Javascript
Webpack实战加载SVG的方法
Dec 26 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 Javascript
在vue中给列表中的奇数行添加class的实现方法
Sep 05 Javascript
Vue多组件仓库开发与发布详解
Feb 28 Javascript
vue全局使用axios的操作
Sep 08 Javascript
详解JS ES6编码规范
May 07 Javascript
idea编译器vue缩进报错问题场景分析
Jul 04 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
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
用jquery来定位
2007/02/20 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
Python基本语法经典教程
2016/03/11 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Django密码系统实现过程详解
2019/07/19 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Python实现井字棋小游戏
2020/03/09 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
存储过程的优缺点是什么
2015/01/10 面试题
门卫岗位安全职责
2013/12/13 职场文书
批评与自我批评总结
2014/10/17 职场文书
钳工实训报告总结
2014/11/04 职场文书
领导离职感言
2015/08/03 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang