jquery.menubutton.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. function _1(_2){
  14. var _3=$.data(_2,"menubutton").options;
  15. var _4=$(_2);
  16. _4.removeClass(_3.cls.btn1+" "+_3.cls.btn2).addClass("m-btn");
  17. _4.linkbutton($.extend({},_3,{text:_3.text+"<span class=\""+_3.cls.arrow+"\">&nbsp;</span>"}));
  18. if(_3.menu){
  19. $(_3.menu).menu();
  20. var _5=$(_3.menu).menu("options");
  21. var _6=_5.onShow;
  22. var _7=_5.onHide;
  23. $.extend(_5,{onShow:function(){
  24. var _8=$(this).menu("options");
  25. var _9=$(_8.alignTo);
  26. var _a=_9.menubutton("options");
  27. _9.addClass((_a.plain==true)?_a.cls.btn2:_a.cls.btn1);
  28. _6.call(this);
  29. },onHide:function(){
  30. var _b=$(this).menu("options");
  31. var _c=$(_b.alignTo);
  32. var _d=_c.menubutton("options");
  33. _c.removeClass((_d.plain==true)?_d.cls.btn2:_d.cls.btn1);
  34. _7.call(this);
  35. }});
  36. }
  37. _e(_2,_3.disabled);
  38. };
  39. function _e(_f,_10){
  40. var _11=$.data(_f,"menubutton").options;
  41. _11.disabled=_10;
  42. var btn=$(_f);
  43. var t=btn.find("."+_11.cls.trigger);
  44. if(!t.length){
  45. t=btn;
  46. }
  47. t.unbind(".menubutton");
  48. if(_10){
  49. btn.linkbutton("disable");
  50. }else{
  51. btn.linkbutton("enable");
  52. var _12=null;
  53. t.bind("click.menubutton",function(){
  54. _13(_f);
  55. return false;
  56. }).bind("mouseenter.menubutton",function(){
  57. _12=setTimeout(function(){
  58. _13(_f);
  59. },_11.duration);
  60. return false;
  61. }).bind("mouseleave.menubutton",function(){
  62. if(_12){
  63. clearTimeout(_12);
  64. }
  65. });
  66. }
  67. };
  68. function _13(_14){
  69. var _15=$.data(_14,"menubutton").options;
  70. if(_15.disabled||!_15.menu){
  71. return;
  72. }
  73. $("body>div.menu-top").menu("hide");
  74. var btn=$(_14);
  75. var mm=$(_15.menu);
  76. if(mm.length){
  77. mm.menu("options").alignTo=btn;
  78. mm.menu("show",{alignTo:btn});
  79. }
  80. btn.blur();
  81. };
  82. $.fn.menubutton=function(_16,_17){
  83. if(typeof _16=="string"){
  84. var _18=$.fn.menubutton.methods[_16];
  85. if(_18){
  86. return _18(this,_17);
  87. }else{
  88. return this.linkbutton(_16,_17);
  89. }
  90. }
  91. _16=_16||{};
  92. return this.each(function(){
  93. var _19=$.data(this,"menubutton");
  94. if(_19){
  95. $.extend(_19.options,_16);
  96. }else{
  97. $.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_16)});
  98. $(this).removeAttr("disabled");
  99. }
  100. _1(this);
  101. });
  102. };
  103. $.fn.menubutton.methods={options:function(jq){
  104. var _1a=jq.linkbutton("options");
  105. var _1b=$.data(jq[0],"menubutton").options;
  106. _1b.toggle=_1a.toggle;
  107. _1b.selected=_1a.selected;
  108. return _1b;
  109. },enable:function(jq){
  110. return jq.each(function(){
  111. _e(this,false);
  112. });
  113. },disable:function(jq){
  114. return jq.each(function(){
  115. _e(this,true);
  116. });
  117. },destroy:function(jq){
  118. return jq.each(function(){
  119. var _1c=$(this).menubutton("options");
  120. if(_1c.menu){
  121. $(_1c.menu).menu("destroy");
  122. }
  123. $(this).remove();
  124. });
  125. }};
  126. $.fn.menubutton.parseOptions=function(_1d){
  127. var t=$(_1d);
  128. return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",duration:"number"}]));
  129. };
  130. $.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}});
  131. })(jQuery);