使表格的标题列可左右拉伸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 相关文章推荐
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
js仿微信语音播放实现思路
Dec 12 Javascript
概述jQuery中的ajax方法
Dec 16 Javascript
微信小程序网络请求的封装与填坑之路
Apr 01 Javascript
Vue.js 2.5新特性介绍(推荐)
Oct 24 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
vue中改变滚动条样式的方法
Mar 03 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 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安全编程之加密功能
2006/10/09 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
php array的学习笔记
2012/05/10 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
JavaScript日历实现代码
2010/09/12 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
了解AppleTalk协议吗
2014/04/01 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
销售员求职个人的自我评价
2014/02/19 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers