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 相关文章推荐
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
Feb 19 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
May 16 Javascript
详解Vue-cli代理解决跨域问题
Sep 27 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 Javascript
解决vue-router 切换tab标签关闭时缓存问题
Jul 22 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实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
python构建深度神经网络(续)
2018/03/10 Python
python为什么会环境变量设置不成功
2020/06/23 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
英文简历中的自我评价
2013/10/06 职场文书
总经理助理工作职责
2014/02/06 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
代办社保委托书范文
2014/10/06 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
2014教师年度工作总结
2014/11/10 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
小学信息技术教学反思
2016/02/16 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
golang slice元素去重操作
2021/04/30 Golang
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript