jquery.linkbutton.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /**
  2. * EasyUI for jQuery 1.6.10
  3. *
  4. * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2,_3){
  12. var _4=$.data(_2,"linkbutton").options;
  13. if(_3){
  14. $.extend(_4,_3);
  15. }
  16. if(_4.width||_4.height||_4.fit){
  17. var _5=$(_2);
  18. var _6=_5.parent();
  19. var _7=_5.is(":visible");
  20. if(!_7){
  21. var _8=$("<div style=\"display:none\"></div>").insertBefore(_2);
  22. var _9={position:_5.css("position"),display:_5.css("display"),left:_5.css("left")};
  23. _5.appendTo("body");
  24. _5.css({position:"absolute",display:"inline-block",left:-20000});
  25. }
  26. _5._size(_4,_6);
  27. var _a=_5.find(".l-btn-left");
  28. _a.css("margin-top",0);
  29. _a.css("margin-top",parseInt((_5.height()-_a.height())/2)+"px");
  30. if(!_7){
  31. _5.insertAfter(_8);
  32. _5.css(_9);
  33. _8.remove();
  34. }
  35. }
  36. };
  37. function _b(_c){
  38. var _d=$.data(_c,"linkbutton").options;
  39. var t=$(_c).empty();
  40. t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected l-btn-outline");
  41. t.removeClass("l-btn-small l-btn-medium l-btn-large").addClass("l-btn-"+_d.size);
  42. if(_d.plain){
  43. t.addClass("l-btn-plain");
  44. }
  45. if(_d.outline){
  46. t.addClass("l-btn-outline");
  47. }
  48. if(_d.selected){
  49. t.addClass(_d.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected");
  50. }
  51. t.attr("group",_d.group||"");
  52. t.attr("id",_d.id||"");
  53. var _e=$("<span class=\"l-btn-left\"></span>").appendTo(t);
  54. if(_d.text){
  55. $("<span class=\"l-btn-text\"></span>").html(_d.text).appendTo(_e);
  56. }else{
  57. $("<span class=\"l-btn-text l-btn-empty\">&nbsp;</span>").appendTo(_e);
  58. }
  59. if(_d.iconCls){
  60. $("<span class=\"l-btn-icon\">&nbsp;</span>").addClass(_d.iconCls).appendTo(_e);
  61. _e.addClass("l-btn-icon-"+_d.iconAlign);
  62. }
  63. t.unbind(".linkbutton").bind("focus.linkbutton",function(){
  64. if(!_d.disabled){
  65. $(this).addClass("l-btn-focus");
  66. }
  67. }).bind("blur.linkbutton",function(){
  68. $(this).removeClass("l-btn-focus");
  69. }).bind("click.linkbutton",function(){
  70. if(!_d.disabled){
  71. if(_d.toggle){
  72. if(_d.selected){
  73. $(this).linkbutton("unselect");
  74. }else{
  75. $(this).linkbutton("select");
  76. }
  77. }
  78. _d.onClick.call(this);
  79. }
  80. });
  81. _f(_c,_d.selected);
  82. _10(_c,_d.disabled);
  83. };
  84. function _f(_11,_12){
  85. var _13=$.data(_11,"linkbutton").options;
  86. if(_12){
  87. if(_13.group){
  88. $("a.l-btn[group=\""+_13.group+"\"]").each(function(){
  89. var o=$(this).linkbutton("options");
  90. if(o.toggle){
  91. $(this).removeClass("l-btn-selected l-btn-plain-selected");
  92. o.selected=false;
  93. }
  94. });
  95. }
  96. $(_11).addClass(_13.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected");
  97. _13.selected=true;
  98. }else{
  99. if(!_13.group){
  100. $(_11).removeClass("l-btn-selected l-btn-plain-selected");
  101. _13.selected=false;
  102. }
  103. }
  104. };
  105. function _10(_14,_15){
  106. var _16=$.data(_14,"linkbutton");
  107. var _17=_16.options;
  108. $(_14).removeClass("l-btn-disabled l-btn-plain-disabled");
  109. if(_15){
  110. _17.disabled=true;
  111. var _18=$(_14).attr("href");
  112. if(_18){
  113. _16.href=_18;
  114. $(_14).attr("href","javascript:;");
  115. }
  116. if(_14.onclick){
  117. _16.onclick=_14.onclick;
  118. _14.onclick=null;
  119. }
  120. _17.plain?$(_14).addClass("l-btn-disabled l-btn-plain-disabled"):$(_14).addClass("l-btn-disabled");
  121. }else{
  122. _17.disabled=false;
  123. if(_16.href){
  124. $(_14).attr("href",_16.href);
  125. }
  126. if(_16.onclick){
  127. _14.onclick=_16.onclick;
  128. }
  129. }
  130. };
  131. $.fn.linkbutton=function(_19,_1a){
  132. if(typeof _19=="string"){
  133. return $.fn.linkbutton.methods[_19](this,_1a);
  134. }
  135. _19=_19||{};
  136. return this.each(function(){
  137. var _1b=$.data(this,"linkbutton");
  138. if(_1b){
  139. $.extend(_1b.options,_19);
  140. }else{
  141. $.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_19)});
  142. $(this)._propAttr("disabled",false);
  143. $(this).bind("_resize",function(e,_1c){
  144. if($(this).hasClass("easyui-fluid")||_1c){
  145. _1(this);
  146. }
  147. return false;
  148. });
  149. }
  150. _b(this);
  151. _1(this);
  152. });
  153. };
  154. $.fn.linkbutton.methods={options:function(jq){
  155. return $.data(jq[0],"linkbutton").options;
  156. },resize:function(jq,_1d){
  157. return jq.each(function(){
  158. _1(this,_1d);
  159. });
  160. },enable:function(jq){
  161. return jq.each(function(){
  162. _10(this,false);
  163. });
  164. },disable:function(jq){
  165. return jq.each(function(){
  166. _10(this,true);
  167. });
  168. },select:function(jq){
  169. return jq.each(function(){
  170. _f(this,true);
  171. });
  172. },unselect:function(jq){
  173. return jq.each(function(){
  174. _f(this,false);
  175. });
  176. }};
  177. $.fn.linkbutton.parseOptions=function(_1e){
  178. var t=$(_1e);
  179. return $.extend({},$.parser.parseOptions(_1e,["id","iconCls","iconAlign","group","size","text",{plain:"boolean",toggle:"boolean",selected:"boolean",outline:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:($.trim(t.html())||undefined),iconCls:(t.attr("icon")||t.attr("iconCls"))});
  180. };
  181. $.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,outline:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left",size:"small",onClick:function(){
  182. }};
  183. })(jQuery);