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 查找select ,并触发事件的实现代码
Mar 30 Javascript
js 调用父窗口的具体实现代码
Jul 15 Javascript
JS中eval函数的使用示例
Jul 21 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
基于javascript实现tab选项卡切换特效调试笔记
Mar 30 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 Javascript
js HTML5手机刮刮乐代码
Sep 29 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
Dec 02 Javascript
关于vue.js v-bind 的一些理解和思考
Jun 06 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
Jul 15 Javascript
微信小程序实现手势滑动效果
Aug 26 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
学习PHP session的传递方式
2016/06/15 PHP
详解PHP归并排序的实现
2016/10/18 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
干部现实表现材料
2014/02/13 职场文书
入职担保书范文
2014/05/21 职场文书
销售人才自我评价范文
2014/09/27 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
中学生检讨书1000字
2014/10/28 职场文书
看雷锋电影观后感
2015/06/10 职场文书
长江七号观后感
2015/06/11 职场文书
车间班组长竞聘书
2015/09/15 职场文书
党性修养心得体会2016
2016/01/21 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python