jquery.accordion.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  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,"accordion");
  15. var _4=_3.options;
  16. var _5=_3.panels;
  17. var cc=$(_2);
  18. _4.fit?$.extend(_4,cc._fit()):cc._fit(false);
  19. if(_4.width>0){
  20. cc._outerWidth(_4.width);
  21. }
  22. var _6="auto";
  23. if(_4.height>0){
  24. cc._outerHeight(_4.height);
  25. var _7=_5.length?_5[0].panel("header").css("height","")._outerHeight():"auto";
  26. var _6=cc.height()-(_5.length-1)*_7;
  27. }
  28. for(var i=0;i<_5.length;i++){
  29. var _8=_5[i];
  30. _8.panel("header")._outerHeight(_7);
  31. _8.panel("resize",{width:cc.width(),height:_6});
  32. }
  33. };
  34. function _9(_a){
  35. var _b=$.data(_a,"accordion").panels;
  36. for(var i=0;i<_b.length;i++){
  37. var _c=_b[i];
  38. if(_c.panel("options").collapsed==false){
  39. return _c;
  40. }
  41. }
  42. return null;
  43. };
  44. function _d(_e,_f){
  45. var _10=$.data(_e,"accordion").panels;
  46. for(var i=0;i<_10.length;i++){
  47. if(_10[i][0]==$(_f)[0]){
  48. return i;
  49. }
  50. }
  51. return -1;
  52. };
  53. function _11(_12,_13,_14){
  54. var _15=$.data(_12,"accordion").panels;
  55. if(typeof _13=="number"){
  56. if(_13<0||_13>=_15.length){
  57. return null;
  58. }else{
  59. var _16=_15[_13];
  60. if(_14){
  61. _15.splice(_13,1);
  62. }
  63. return _16;
  64. }
  65. }
  66. for(var i=0;i<_15.length;i++){
  67. var _16=_15[i];
  68. if(_16.panel("options").title==_13){
  69. if(_14){
  70. _15.splice(i,1);
  71. }
  72. return _16;
  73. }
  74. }
  75. return null;
  76. };
  77. function _17(_18){
  78. var _19=$.data(_18,"accordion").options;
  79. var cc=$(_18);
  80. if(_19.border){
  81. cc.removeClass("accordion-noborder");
  82. }else{
  83. cc.addClass("accordion-noborder");
  84. }
  85. };
  86. function _1a(_1b){
  87. var cc=$(_1b);
  88. cc.addClass("accordion");
  89. var _1c=[];
  90. cc.children("div").each(function(){
  91. var _1d=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)});
  92. var pp=$(this);
  93. _1c.push(pp);
  94. _20(_1b,pp,_1d);
  95. });
  96. cc.bind("_resize",function(e,_1e){
  97. var _1f=$.data(_1b,"accordion").options;
  98. if(_1f.fit==true||_1e){
  99. _1(_1b);
  100. }
  101. return false;
  102. });
  103. return {accordion:cc,panels:_1c};
  104. };
  105. function _20(_21,pp,_22){
  106. pp.panel($.extend({},_22,{collapsible:false,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body",onBeforeExpand:function(){
  107. if(_22.onBeforeExpand){
  108. if(_22.onBeforeExpand.call(this)==false){
  109. return false;
  110. }
  111. }
  112. var _23=_9(_21);
  113. if(_23){
  114. var _24=$(_23).panel("header");
  115. _24.removeClass("accordion-header-selected");
  116. _24.find(".accordion-collapse").triggerHandler("click");
  117. }
  118. var _24=pp.panel("header");
  119. _24.addClass("accordion-header-selected");
  120. _24.find(".accordion-collapse").removeClass("accordion-expand");
  121. },onExpand:function(){
  122. if(_22.onExpand){
  123. _22.onExpand.call(this);
  124. }
  125. var _25=$.data(_21,"accordion").options;
  126. _25.onSelect.call(_21,pp.panel("options").title,_d(_21,this));
  127. },onBeforeCollapse:function(){
  128. if(_22.onBeforeCollapse){
  129. if(_22.onBeforeCollapse.call(this)==false){
  130. return false;
  131. }
  132. }
  133. var _26=pp.panel("header");
  134. _26.removeClass("accordion-header-selected");
  135. _26.find(".accordion-collapse").addClass("accordion-expand");
  136. }}));
  137. var _27=pp.panel("header");
  138. var t=$("<a class=\"accordion-collapse accordion-expand\" href=\"javascript:void(0)\"></a>").appendTo(_27.children("div.panel-tool"));
  139. t.bind("click",function(e){
  140. var _28=$.data(_21,"accordion").options.animate;
  141. _35(_21);
  142. if(pp.panel("options").collapsed){
  143. pp.panel("expand",_28);
  144. }else{
  145. pp.panel("collapse",_28);
  146. }
  147. return false;
  148. });
  149. _27.click(function(){
  150. $(this).find(".accordion-collapse").triggerHandler("click");
  151. return false;
  152. });
  153. };
  154. function _29(_2a,_2b){
  155. var _2c=_11(_2a,_2b);
  156. if(!_2c){
  157. return;
  158. }
  159. var _2d=_9(_2a);
  160. if(_2d&&_2d[0]==_2c[0]){
  161. return;
  162. }
  163. _2c.panel("header").triggerHandler("click");
  164. };
  165. function _2e(_2f){
  166. var _30=$.data(_2f,"accordion").panels;
  167. for(var i=0;i<_30.length;i++){
  168. if(_30[i].panel("options").selected){
  169. _31(i);
  170. return;
  171. }
  172. }
  173. if(_30.length){
  174. _31(0);
  175. }
  176. function _31(_32){
  177. var _33=$.data(_2f,"accordion").options;
  178. var _34=_33.animate;
  179. _33.animate=false;
  180. _29(_2f,_32);
  181. _33.animate=_34;
  182. };
  183. };
  184. function _35(_36){
  185. var _37=$.data(_36,"accordion").panels;
  186. for(var i=0;i<_37.length;i++){
  187. _37[i].stop(true,true);
  188. }
  189. };
  190. function add(_38,_39){
  191. var _3a=$.data(_38,"accordion");
  192. var _3b=_3a.options;
  193. var _3c=_3a.panels;
  194. if(_39.selected==undefined){
  195. _39.selected=true;
  196. }
  197. _35(_38);
  198. var pp=$("<div></div>").appendTo(_38);
  199. _3c.push(pp);
  200. _20(_38,pp,_39);
  201. _1(_38);
  202. _3b.onAdd.call(_38,_39.title,_3c.length-1);
  203. if(_39.selected){
  204. _29(_38,_3c.length-1);
  205. }
  206. };
  207. function _3d(_3e,_3f){
  208. var _40=$.data(_3e,"accordion");
  209. var _41=_40.options;
  210. var _42=_40.panels;
  211. _35(_3e);
  212. var _43=_11(_3e,_3f);
  213. var _44=_43.panel("options").title;
  214. var _45=_d(_3e,_43);
  215. if(_41.onBeforeRemove.call(_3e,_44,_45)==false){
  216. return;
  217. }
  218. var _43=_11(_3e,_3f,true);
  219. if(_43){
  220. _43.panel("destroy");
  221. if(_42.length){
  222. _1(_3e);
  223. var _46=_9(_3e);
  224. if(!_46){
  225. _29(_3e,0);
  226. }
  227. }
  228. }
  229. _41.onRemove.call(_3e,_44,_45);
  230. };
  231. $.fn.accordion=function(_47,_48){
  232. if(typeof _47=="string"){
  233. return $.fn.accordion.methods[_47](this,_48);
  234. }
  235. _47=_47||{};
  236. return this.each(function(){
  237. var _49=$.data(this,"accordion");
  238. var _4a;
  239. if(_49){
  240. _4a=$.extend(_49.options,_47);
  241. _49.opts=_4a;
  242. }else{
  243. _4a=$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_47);
  244. var r=_1a(this);
  245. $.data(this,"accordion",{options:_4a,accordion:r.accordion,panels:r.panels});
  246. }
  247. _17(this);
  248. _1(this);
  249. _2e(this);
  250. });
  251. };
  252. $.fn.accordion.methods={options:function(jq){
  253. return $.data(jq[0],"accordion").options;
  254. },panels:function(jq){
  255. return $.data(jq[0],"accordion").panels;
  256. },resize:function(jq){
  257. return jq.each(function(){
  258. _1(this);
  259. });
  260. },getSelected:function(jq){
  261. return _9(jq[0]);
  262. },getPanel:function(jq,_4b){
  263. return _11(jq[0],_4b);
  264. },getPanelIndex:function(jq,_4c){
  265. return _d(jq[0],_4c);
  266. },select:function(jq,_4d){
  267. return jq.each(function(){
  268. _29(this,_4d);
  269. });
  270. },add:function(jq,_4e){
  271. return jq.each(function(){
  272. add(this,_4e);
  273. });
  274. },remove:function(jq,_4f){
  275. return jq.each(function(){
  276. _3d(this,_4f);
  277. });
  278. }};
  279. $.fn.accordion.parseOptions=function(_50){
  280. var t=$(_50);
  281. return $.extend({},$.parser.parseOptions(_50,["width","height",{fit:"boolean",border:"boolean",animate:"boolean"}]));
  282. };
  283. $.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,onSelect:function(_51,_52){
  284. },onAdd:function(_53,_54){
  285. },onBeforeRemove:function(_55,_56){
  286. },onRemove:function(_57,_58){
  287. }};
  288. })(jQuery);