jquery 拖动表格 改变列宽
来源:互联网 发布:ubuntu 搜狗 乱码 编辑:程序博客网 时间:2024/05/16 05:40
/* * DragTable Tool dragTable.js * Version 1.0.0 * Author 陈波 * @requires jQuery v1.3.2 or later * @example $('#id').dragTable({limitWidth:20}); * limitWidth:单元格最小宽度,不设置默认为1 * table父节点css样式不要设置'width'属性 */;(function($) {$.fn.dragTable = function(options){ var $this = $(this);$this.parent().css('width',null); $this.css({'width':null,'table-layout':'fixed'}); var currentTd=null; var cookieKeyName = getFileName()+'-'+$this.attr('id');var limitWidth = options?options.limitWidth:1; var tdWidth = getCookie(cookieKeyName); var tdWidthArray = null; if(null!=tdWidth && undefined!=tdWidth){tdWidthArray = tdWidth.split(',');} $this.find('tr:first td').each(function(i){$(this).css({'cursor':'col-resize'}).attr('nowrap', true);$(this).css('width',null!=tdWidthArray?tdWidthArray[i]:$(this)[0].offsetWidth); }); $this.find('tr:first td').bind('mousedown',function(event, obj){obj=obj||this;event=event||window.event;currentTd=obj;obj.mouseDownX=event.clientX;obj.tdW=obj.offsetWidth;if(obj.setCapture){ obj.setCapture();}else if(window.captureEvents){ window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); } });$this.find('tr:first td').bind('mousemove',function(event){if(!currentTd) return ;var obj=currentTd;event=event||window.event;if(!obj.mouseDownX) return false;if(obj.parentNode.rowIndex==0) {var newWidth=obj.tdW*1+event.clientX*1-obj.mouseDownX; if(newWidth>limitWidth) obj.style.width = newWidth; else obj.style.width =limitWidth;}});$this.find('tr:first td').bind('mouseup',function(){var widthTdTemp = [];$this.find('tr:first td').each(function(){widthTdTemp.push($(this).css('width'));});addCookie(cookieKeyName, widthTdTemp, 360);if(!currentTd) return;if(currentTd.releaseCapture){ currentTd.releaseCapture(); }else if(window.captureEvents){ window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP); } currentTd=null;}); // 获取cookiefunction getCookie(objName){ var arrStr = document.cookie.split("; "); for(var i = 0;i < arrStr.length;i ++){ var temp = arrStr[i].split("="); if(temp[0] == objName) return unescape(temp[1]); } } // 添加cookiefunction addCookie(name,value,expires,path,domain){ var str=name+"="+escape(value); if(expires&&expires!=""){ var date=new Date(); date.setTime(date.getTime()+expires*24*3600*1000);//expires单位为天 str+=";expires="+date.toGMTString(); } if(path&&path!=""){ str+=";path="+path;//指定可访问cookie的目录 } if(domain&&domain!=""){ str+=";domain="+domain;//指定可访问cookie的域 } document.cookie=str;}// 获取引用该js文件的文件名function getFileName(){var arrUrl=window.location.href.split("/");return escape(arrUrl[arrUrl.length-1]);}} })(jQuery);