jquery.accordion.js 6.9 KB

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