jquery.menubutton.js 3.2 KB

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