jquery.accordion.js 7.0 KB

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