使表格的标题列可左右拉伸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下event事件杂谈
Dec 18 Javascript
计算新浪Weibo消息长度(还可以输入119字)
Jul 02 Javascript
php与js的区别是什么
Aug 05 Javascript
js实现可折叠展开的手风琴菜单效果
Sep 07 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
Dec 22 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
JavaScript 跨域之POST实现方法
May 07 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
Apr 01 Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 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
模仿OSO的论坛(五)
2006/10/09 PHP
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
json的前台操作和后台操作实现代码
2012/01/20 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
详解appium+python 启动一个app步骤
2017/12/20 Python
分析Python读取文件时的路径问题
2018/02/11 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
python中K-means算法基础知识点
2021/01/25 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
什么是.net
2015/08/03 面试题
药品营销专业毕业生自荐信
2014/07/02 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
新教师个人总结
2015/02/06 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS