jquery.accordion.js 7.8 KB

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