jquery.resizable.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. /**
  2. * jQuery EasyUI 1.3.4
  3. *
  4. * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL or commercial licenses
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. * http://www.gnu.org/licenses/gpl.txt
  9. * http://www.jeasyui.com/license_commercial.php
  10. *
  11. */
  12. (function($){
  13. $.fn.resizable=function(_1,_2){
  14. if(typeof _1=="string"){
  15. return $.fn.resizable.methods[_1](this,_2);
  16. }
  17. function _3(e){
  18. var _4=e.data;
  19. var _5=$.data(_4.target,"resizable").options;
  20. if(_4.dir.indexOf("e")!=-1){
  21. var _6=_4.startWidth+e.pageX-_4.startX;
  22. _6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth);
  23. _4.width=_6;
  24. }
  25. if(_4.dir.indexOf("s")!=-1){
  26. var _7=_4.startHeight+e.pageY-_4.startY;
  27. _7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight);
  28. _4.height=_7;
  29. }
  30. if(_4.dir.indexOf("w")!=-1){
  31. var _6=_4.startWidth-e.pageX+_4.startX;
  32. _6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth);
  33. _4.width=_6;
  34. _4.left=_4.startLeft+_4.startWidth-_4.width;
  35. }
  36. if(_4.dir.indexOf("n")!=-1){
  37. var _7=_4.startHeight-e.pageY+_4.startY;
  38. _7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight);
  39. _4.height=_7;
  40. _4.top=_4.startTop+_4.startHeight-_4.height;
  41. }
  42. };
  43. function _8(e){
  44. var _9=e.data;
  45. var t=$(_9.target);
  46. t.css({left:_9.left,top:_9.top});
  47. if(t.outerWidth()!=_9.width){
  48. t._outerWidth(_9.width);
  49. }
  50. if(t.outerHeight()!=_9.height){
  51. t._outerHeight(_9.height);
  52. }
  53. };
  54. function _a(e){
  55. $.fn.resizable.isResizing=true;
  56. $.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e);
  57. return false;
  58. };
  59. function _b(e){
  60. _3(e);
  61. if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){
  62. _8(e);
  63. }
  64. return false;
  65. };
  66. function _c(e){
  67. $.fn.resizable.isResizing=false;
  68. _3(e,true);
  69. _8(e);
  70. $.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e);
  71. $(document).unbind(".resizable");
  72. $("body").css("cursor","");
  73. return false;
  74. };
  75. return this.each(function(){
  76. var _d=null;
  77. var _e=$.data(this,"resizable");
  78. if(_e){
  79. $(this).unbind(".resizable");
  80. _d=$.extend(_e.options,_1||{});
  81. }else{
  82. _d=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_1||{});
  83. $.data(this,"resizable",{options:_d});
  84. }
  85. if(_d.disabled==true){
  86. return;
  87. }
  88. $(this).bind("mousemove.resizable",{target:this},function(e){
  89. if($.fn.resizable.isResizing){
  90. return;
  91. }
  92. var _f=_10(e);
  93. if(_f==""){
  94. $(e.data.target).css("cursor","");
  95. }else{
  96. $(e.data.target).css("cursor",_f+"-resize");
  97. }
  98. }).bind("mouseleave.resizable",{target:this},function(e){
  99. $(e.data.target).css("cursor","");
  100. }).bind("mousedown.resizable",{target:this},function(e){
  101. var dir=_10(e);
  102. if(dir==""){
  103. return;
  104. }
  105. function _11(css){
  106. var val=parseInt($(e.data.target).css(css));
  107. if(isNaN(val)){
  108. return 0;
  109. }else{
  110. return val;
  111. }
  112. };
  113. var _12={target:e.data.target,dir:dir,startLeft:_11("left"),startTop:_11("top"),left:_11("left"),top:_11("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()};
  114. $(document).bind("mousedown.resizable",_12,_a);
  115. $(document).bind("mousemove.resizable",_12,_b);
  116. $(document).bind("mouseup.resizable",_12,_c);
  117. $("body").css("cursor",dir+"-resize");
  118. });
  119. function _10(e){
  120. var tt=$(e.data.target);
  121. var dir="";
  122. var _13=tt.offset();
  123. var _14=tt.outerWidth();
  124. var _15=tt.outerHeight();
  125. var _16=_d.edge;
  126. if(e.pageY>_13.top&&e.pageY<_13.top+_16){
  127. dir+="n";
  128. }else{
  129. if(e.pageY<_13.top+_15&&e.pageY>_13.top+_15-_16){
  130. dir+="s";
  131. }
  132. }
  133. if(e.pageX>_13.left&&e.pageX<_13.left+_16){
  134. dir+="w";
  135. }else{
  136. if(e.pageX<_13.left+_14&&e.pageX>_13.left+_14-_16){
  137. dir+="e";
  138. }
  139. }
  140. var _17=_d.handles.split(",");
  141. for(var i=0;i<_17.length;i++){
  142. var _18=_17[i].replace(/(^\s*)|(\s*$)/g,"");
  143. if(_18=="all"||_18==dir){
  144. return dir;
  145. }
  146. }
  147. return "";
  148. };
  149. });
  150. };
  151. $.fn.resizable.methods={options:function(jq){
  152. return $.data(jq[0],"resizable").options;
  153. },enable:function(jq){
  154. return jq.each(function(){
  155. $(this).resizable({disabled:false});
  156. });
  157. },disable:function(jq){
  158. return jq.each(function(){
  159. $(this).resizable({disabled:true});
  160. });
  161. }};
  162. $.fn.resizable.parseOptions=function(_19){
  163. var t=$(_19);
  164. return $.extend({},$.parser.parseOptions(_19,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)});
  165. };
  166. $.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){
  167. },onResize:function(e){
  168. },onStopResize:function(e){
  169. }};
  170. $.fn.resizable.isResizing=false;
  171. })(jQuery);