jquery.menubutton.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /**
  2. * jQuery EasyUI 1.4.1
  3. *
  4. * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
  7. * To use it on other terms please contact us at info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2){
  12. var _3=$.data(_2,"menubutton").options;
  13. var _4=$(_2);
  14. _4.linkbutton(_3);
  15. _4.removeClass(_3.cls.btn1+" "+_3.cls.btn2).addClass("m-btn");
  16. _4.removeClass("m-btn-small m-btn-medium m-btn-large").addClass("m-btn-"+_3.size);
  17. var _5=_4.find(".l-btn-left");
  18. $("<span></span>").addClass(_3.cls.arrow).appendTo(_5);
  19. $("<span></span>").addClass("m-btn-line").appendTo(_5);
  20. if(_3.menu){
  21. $(_3.menu).menu({duration:_3.duration});
  22. var _6=$(_3.menu).menu("options");
  23. var _7=_6.onShow;
  24. var _8=_6.onHide;
  25. $.extend(_6,{onShow:function(){
  26. var _9=$(this).menu("options");
  27. var _a=$(_9.alignTo);
  28. var _b=_a.menubutton("options");
  29. _a.addClass((_b.plain==true)?_b.cls.btn2:_b.cls.btn1);
  30. _7.call(this);
  31. },onHide:function(){
  32. var _c=$(this).menu("options");
  33. var _d=$(_c.alignTo);
  34. var _e=_d.menubutton("options");
  35. _d.removeClass((_e.plain==true)?_e.cls.btn2:_e.cls.btn1);
  36. _8.call(this);
  37. }});
  38. }
  39. };
  40. function _f(_10){
  41. var _11=$.data(_10,"menubutton").options;
  42. var btn=$(_10);
  43. var t=btn.find("."+_11.cls.trigger);
  44. if(!t.length){
  45. t=btn;
  46. }
  47. t.unbind(".menubutton");
  48. var _12=null;
  49. t.bind("click.menubutton",function(){
  50. if(!_13()){
  51. _14(_10);
  52. return false;
  53. }
  54. }).bind("mouseenter.menubutton",function(){
  55. if(!_13()){
  56. _12=setTimeout(function(){
  57. _14(_10);
  58. },_11.duration);
  59. return false;
  60. }
  61. }).bind("mouseleave.menubutton",function(){
  62. if(_12){
  63. clearTimeout(_12);
  64. }
  65. $(_11.menu).triggerHandler("mouseleave");
  66. });
  67. function _13(){
  68. return $(_10).linkbutton("options").disabled;
  69. };
  70. };
  71. function _14(_15){
  72. var _16=$(_15).menubutton("options");
  73. if(_16.disabled||!_16.menu){
  74. return;
  75. }
  76. $("body>div.menu-top").menu("hide");
  77. var btn=$(_15);
  78. var mm=$(_16.menu);
  79. if(mm.length){
  80. mm.menu("options").alignTo=btn;
  81. mm.menu("show",{alignTo:btn,align:_16.menuAlign});
  82. }
  83. btn.blur();
  84. };
  85. $.fn.menubutton=function(_17,_18){
  86. if(typeof _17=="string"){
  87. var _19=$.fn.menubutton.methods[_17];
  88. if(_19){
  89. return _19(this,_18);
  90. }else{
  91. return this.linkbutton(_17,_18);
  92. }
  93. }
  94. _17=_17||{};
  95. return this.each(function(){
  96. var _1a=$.data(this,"menubutton");
  97. if(_1a){
  98. $.extend(_1a.options,_17);
  99. }else{
  100. $.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_17)});
  101. $(this).removeAttr("disabled");
  102. }
  103. _1(this);
  104. _f(this);
  105. });
  106. };
  107. $.fn.menubutton.methods={options:function(jq){
  108. var _1b=jq.linkbutton("options");
  109. return $.extend($.data(jq[0],"menubutton").options,{toggle:_1b.toggle,selected:_1b.selected,disabled:_1b.disabled});
  110. },destroy:function(jq){
  111. return jq.each(function(){
  112. var _1c=$(this).menubutton("options");
  113. if(_1c.menu){
  114. $(_1c.menu).menu("destroy");
  115. }
  116. $(this).remove();
  117. });
  118. }};
  119. $.fn.menubutton.parseOptions=function(_1d){
  120. var t=$(_1d);
  121. return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",duration:"number"}]));
  122. };
  123. $.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,menuAlign:"left",duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}});
  124. })(jQuery);