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 相关文章推荐
为Yahoo! UI Extensions Grid增加内置的可编辑器
Mar 10 Javascript
深入解析contentWindow, contentDocument
Jul 04 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
AngularJS的$location使用方法详解
Oct 19 Javascript
在Vue项目中使用d3.js的实例代码
May 01 Javascript
Node.js原生api搭建web服务器的方法步骤
Feb 15 Javascript
VSCode搭建Vue项目的方法
Apr 30 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
js实现数字跳动到指定数字
Aug 25 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 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和XSS跨站攻击的防范
2007/04/17 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
详解如何webpack使用DllPlugin
2018/09/30 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
关于抽烟的检讨书
2014/02/25 职场文书
岗位竞聘书范文
2014/03/31 职场文书
研究生求职自荐书
2014/06/23 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
求职信范文怎么写
2015/03/19 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
刑事上诉状范文
2015/05/22 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
Python find()、rfind()方法及作用
2022/12/24 Python