使表格的标题列可左右拉伸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截取固定长度的中英文字符的简单实例
Nov 22 Javascript
Jquery解析json数据详解
Dec 26 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
JAVA四种基本排序方法实例总结
Jul 24 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
简单实现js菜单栏切换效果
Mar 04 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
Dec 20 Javascript
VUE基于NUXT的SSR 服务端渲染
Nov 30 Javascript
ES10 特性的完整指南小结
Mar 04 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
Nov 13 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&amp;mysql(五)
2006/10/09 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python3.x中自定义比较函数
2015/04/24 Python
Python的Django框架中的表单处理示例
2015/07/17 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
财务部副经理岗位职责
2014/03/14 职场文书
员工工作表现自我评价
2015/03/06 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书