123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- /**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerAccordion = function (options)
- {
- return $.ligerui.run.call(this, "ligerAccordion", arguments);
- };
- $.fn.ligerGetAccordionManager = function ()
- {
- return $.ligerui.get(this);
- };
- $.ligerDefaults.Accordion = {
- height: null,
- speed: "normal",
- changeHeightOnResize: false,
- heightDiff: 0 // 高度补差
- };
- $.ligerMethos.Accordion = {};
- $.ligerui.controls.Accordion = function (element, options)
- {
- $.ligerui.controls.Accordion.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Accordion.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Accordion';
- },
- __idPrev: function ()
- {
- return 'Accordion';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Accordion;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.accordion = $(g.element);
- if (!g.accordion.hasClass("l-accordion-panel")) g.accordion.addClass("l-accordion-panel");
- var selectedIndex = 0;
- if ($("> div[lselected=true]", g.accordion).length > 0)
- selectedIndex = $("> div", g.accordion).index($("> div[lselected=true]", g.accordion));
- $("> div", g.accordion).each(function (i, box)
- {
- var header = $('<div class="l-accordion-header"><div class="l-accordion-toggle"></div><div class="l-accordion-header-inner"></div></div>');
- if (i == selectedIndex)
- $(".l-accordion-toggle", header).addClass("l-accordion-toggle-open");
- if ($(box).attr("title"))
- {
- $(".l-accordion-header-inner", header).html($(box).attr("title"));
- $(box).attr("title", "");
- }
- $(box).before(header);
- if (!$(box).hasClass("l-accordion-content")) $(box).addClass("l-accordion-content");
- });
- //add Even
- $(".l-accordion-toggle", g.accordion).each(function ()
- {
- if (!$(this).hasClass("l-accordion-toggle-open") && !$(this).hasClass("l-accordion-toggle-close"))
- {
- $(this).addClass("l-accordion-toggle-close");
- }
- if ($(this).hasClass("l-accordion-toggle-close"))
- {
- $(this).parent().next(".l-accordion-content:visible").hide();
- }
- });
- $(".l-accordion-toggle", g.accordion).hover(function ()
- {
- if ($(this).hasClass("l-accordion-toggle-open"))
- $(this).addClass("l-accordion-toggle-open-over");
- else if ($(this).hasClass("l-accordion-toggle-close"))
- $(this).addClass("l-accordion-toggle-close-over");
- }, function ()
- {
- if ($(this).hasClass("l-accordion-toggle-open"))
- $(this).removeClass("l-accordion-toggle-open-over");
- else if ($(this).hasClass("l-accordion-toggle-close"))
- $(this).removeClass("l-accordion-toggle-close-over");
- });
- $(">.l-accordion-header", g.accordion).click(function ()
- {
- var togglebtn = $(".l-accordion-toggle:first", this);
- if (togglebtn.hasClass("l-accordion-toggle-close"))
- {
- togglebtn.removeClass("l-accordion-toggle-close")
- .removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
- togglebtn.addClass("l-accordion-toggle-open");
- $(this).next(".l-accordion-content")
- .show(p.speed)
- .siblings(".l-accordion-content:visible").hide(p.speed);
- $(this).siblings(".l-accordion-header").find(".l-accordion-toggle").removeClass("l-accordion-toggle-open").addClass("l-accordion-toggle-close");
- }
- else
- {
- togglebtn.removeClass("l-accordion-toggle-open")
- .removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
- .addClass("l-accordion-toggle-close");
- $(this).next(".l-accordion-content").hide(p.speed);
- }
- });
- //init
- g.headerHoldHeight = 0;
- $("> .l-accordion-header", g.accordion).each(function ()
- {
- g.headerHoldHeight += $(this).height();
- });
- if (p.height && typeof (p.height) == 'string' && p.height.indexOf('%') > 0)
- {
- g.onResize();
- if (p.changeHeightOnResize)
- {
- $(window).resize(function ()
- {
- g.onResize();
- });
- }
- }
- else
- {
- if (p.height)
- {
- g.height = p.heightDiff + p.height;
- g.accordion.height(g.height);
- g.setHeight(p.height);
- }
- else
- {
- g.header = g.accordion.height();
- }
- }
- g.set(p);
- },
- onResize: function ()
- {
- var g = this, p = this.options;
- if (!p.height || typeof (p.height) != 'string' || p.height.indexOf('%') == -1) return false;
- //set accordion height
- if (g.accordion.parent()[0].tagName.toLowerCase() == "body")
- {
- var windowHeight = $(window).height();
- windowHeight -= parseInt(g.layout.parent().css('paddingTop'));
- windowHeight -= parseInt(g.layout.parent().css('paddingBottom'));
- g.height = p.heightDiff + windowHeight * parseFloat(g.height) * 0.01;
- }
- else
- {
- g.height = p.heightDiff + (g.accordion.parent().height() * parseFloat(p.height) * 0.01);
- }
- g.accordion.height(g.height);
- g.setContentHeight(g.height - g.headerHoldHeight);
- },
- setHeight: function (height)
- {
- var g = this, p = this.options;
- g.accordion.height(height);
- height -= g.headerHoldHeight;
- $("> .l-accordion-content", g.accordion).height(height);
- }
- });
- })(jQuery);
|