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学习资源站点
Aug 29 Javascript
jQuery 创建Dom元素
May 07 Javascript
20条学习javascript的编程规范的建议
Nov 28 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
JavaScript实现函数返回多个值的方法
Jun 09 Javascript
JavaScript仿静态分页实现方法
Aug 04 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
Jun 10 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
Nov 07 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
Feb 22 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
js 实现Material UI点击涟漪效果示例
Sep 23 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
php根据日期显示所在星座的方法
2015/07/13 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
javascript 函数速查表
2010/02/07 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
使用javascript做在线算法编程
2018/05/25 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python的迭代器和生成器
2015/07/29 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
什么时候用assert
2015/05/08 面试题
经济系大学生求职信
2013/10/01 职场文书
会计职业生涯规划范文
2014/01/04 职场文书
个人评价范文分享
2014/01/11 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
单位工作证明格式模板
2014/10/04 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
学校运动会开幕词
2016/03/03 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
MySQL常见优化方案汇总
2022/01/18 MySQL
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle