dwz.panel.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. * @author Roger Wu
  3. * @version 1.0
  4. */
  5. (function($){
  6. $.extend($.fn, {
  7. jPanel:function(options){
  8. var op = $.extend({header:"panelHeader", headerC:"panelHeaderContent", content:"panelContent", coll:"collapsable", exp:"expandable", footer:"panelFooter", footerC:"panelFooterContent"}, options);
  9. return this.each(function(){
  10. var $panel = $(this);
  11. var close = $panel.hasClass("close");
  12. var collapse = $panel.hasClass("collapse");
  13. var $content = $(">div", $panel).addClass(op.content);
  14. var title = $(">h1",$panel).wrap('<div class="'+op.header+'"><div class="'+op.headerC+'"></div></div>');
  15. if(collapse)$("<a href=\"\"></a>").addClass(close?op.exp:op.coll).insertAfter(title);
  16. var header = $(">div:first", $panel);
  17. var footer = $('<div class="'+op.footer+'"><div class="'+op.footerC+'"></div></div>').appendTo($panel);
  18. var defaultH = $panel.attr("defH")?$panel.attr("defH"):0;
  19. var minH = $panel.attr("minH")?$panel.attr("minH"):0;
  20. if (close)
  21. $content.css({
  22. height: "0px",
  23. display: "none"
  24. });
  25. else {
  26. if (defaultH > 0)
  27. $content.height(defaultH + "px");
  28. else if(minH > 0){
  29. $content.css("minHeight", minH+"px");
  30. }
  31. }
  32. if(!collapse) return;
  33. var $pucker = $("a", header);
  34. var inH = $content.innerHeight() - 6;
  35. if(minH > 0 && minH >= inH) defaultH = minH;
  36. else defaultH = inH;
  37. $pucker.click(function(){
  38. if($pucker.hasClass(op.exp)){
  39. $content.jBlindDown({to:defaultH,call:function(){
  40. $pucker.removeClass(op.exp).addClass(op.coll);
  41. if(minH > 0) $content.css("minHeight",minH+"px");
  42. }});
  43. } else {
  44. if(minH > 0) $content.css("minHeight","");
  45. if(minH >= inH) $content.css("height", minH+"px");
  46. $content.jBlindUp({call:function(){
  47. $pucker.removeClass(op.coll).addClass(op.exp);
  48. }});
  49. }
  50. return false;
  51. });
  52. });
  53. }
  54. });
  55. })(jQuery);