使表格的标题列可左右拉伸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 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
基于jquery的大众点评,分类导航实现代码
Aug 23 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
jQuery中操控hidden、disable等无值属性的方法
Jan 06 Javascript
判断及设置浏览器全屏模式
Apr 20 Javascript
向JavaScript的数组中添加元素的方法小结
Oct 24 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
May 12 Javascript
JS中关于事件处理函数名后面是否带括号的问题
Nov 16 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
Dec 06 Javascript
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 Javascript
Vue3.0中的monorepo管理模式的实现
Oct 14 Javascript
原生小程序封装跑马灯效果
Oct 21 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 调用远程url的六种方法小结
2009/11/02 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
Vue.use源码分析
2017/04/22 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
毕业留言寄语大全
2014/04/10 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
忠诚教育心得体会
2014/09/03 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android