使表格的标题列可左右拉伸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 相关文章推荐
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
Feb 14 Javascript
原来Jquery.load的方法可以一直load下去
Mar 28 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 Javascript
学习使用bootstrap3栅格系统
Apr 12 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
Apr 14 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
Feb 18 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 Javascript
微信小程序实现canvas分享朋友圈海报
Jun 21 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 jQuery
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 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
python实现代码统计程序
2019/09/19 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
django model通过字典更新数据实例
2020/04/01 Python
Python远程linux执行命令实现
2020/11/11 Python
村委会贫困证明
2014/01/14 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
党员个人整改方案及措施
2014/10/25 职场文书