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中实现块作用域的方法
Apr 01 Javascript
JavaScript实现表格排序方法
Jun 14 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
Jul 17 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
js获取Get值的方法
Sep 29 Javascript
关于vue-resource报错450的解决方案
Jul 24 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
用POSTMAN发送JSON格式的POST请求示例
Sep 04 Javascript
关于AngularJS中几种Providers的区别总结
May 17 Javascript
Js和VUE实现跑马灯效果
May 25 Javascript
Vue实现点击箭头上下移动效果
Jun 11 Javascript
利用JS判断元素是否为数组的方法示例
Jan 08 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程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
php常用表单验证类用法实例
2015/06/18 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
jquery 问答知识整理
2010/02/11 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
canvas绘制多边形
2017/02/24 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
python 正则式 概述及常用字符
2009/05/07 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
3分钟学会一个Python小技巧
2018/11/23 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
财务管理专业应届毕业生求职信
2013/09/22 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
酒后驾车标语
2014/06/30 职场文书
聚会通知怎么写
2015/04/23 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
浅谈mysql执行过程以及顺序
2021/05/12 MySQL