jQuery实现拖动调整表格单元格大小的代码实例


Posted in Javascript onJanuary 13, 2015

jQuery实现的拖动调整表格td单元格的大小:

在实际应用中,可能有这样的需求,那就是需要调整td单元格的大小。
也许是为了便于观察,也许是其他原因,反正这样的需求是有的,下面就分享一段能够实现此功能的代码。

代码实例如下:

<!DOCTYPE html>

<html>

<head>

<meta charset=" utf-8">

<title>三水点靠木</title>

<style type="text/css" >

table {

  border-collapse: collapse;

}

td {

  text-align: center;

}

</style>

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>

<script type="text/javascript">

(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); 

   

$(document).ready(function () {

  $("table").tableresize();

});

</script>

</head>

<body>

<table cellspacing="0" border="1" 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>

</body>

</html>
Javascript 相关文章推荐
JavaScript中instanceof运算符的用法总结
Nov 19 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
手机软键盘弹出时影响布局的解决方法
Dec 15 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 Javascript
JS严格模式知识点总结
Feb 27 Javascript
微信小程序实现人脸识别
May 25 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
Vue Components 数字键盘的实现
Sep 18 Javascript
JS使用H5实现图片预览功能
Sep 30 Javascript
Vue实现导航栏菜单
Aug 19 Javascript
jQuery trigger()方法用法介绍
Jan 13 #Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 #Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 #Javascript
15个jquery常用方法、小技巧分享
Jan 13 #Javascript
js对象基础实例分析
Jan 13 #Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
Jan 13 #Javascript
js使用心得分享
Jan 13 #Javascript
You might like
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
Python装饰器知识点补充
2018/05/28 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
北京振戎融通Java面试题
2015/09/03 面试题
职工代表大会主持词
2014/04/01 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
质量整改通知单
2015/04/21 职场文书
离婚协议书范文2016
2016/03/18 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS