基于jQuery实现Accordion手风琴自定义插件

2020-05-27 17:55:17易采站长站整理

item.append(header);
if (data.childrens) {
var toggle = $("<i class='" + settings.style.icon_base + "" + settings.style.icon_collapse + "'></i>");
toggle.css({ "font-size": "1.4em", "position": "absolute", "top": "7px", "right": "7px" });
header.append(toggle);
var content = $("<ul class='" + settings.style.content + "'></ul>");
content.data("count", data.childrens.length);
$.each(data.childrens, function () {
this.level = data.level + 1;
var child = $this.accordion("add", this);
content.append(child);
});
item.append(content);
}
header.click(function () {
$this.accordion("select", data);
});
if (data.selected) {
$this.accordion("select", data);
}
return item;
},
select: function (data) {
var $this = $(this);
var settings = $this.data("tw.accordion");
var header = $this.find("[data-accordion='" + data.id + "']");
var item = header.parent();
if (!header.hasClass(settings.style.selected) && !item.hasClass(settings.style.selected)) {
var sibling = item.siblings();
sibling.removeClass(settings.style.selected).children("." + settings.style.selected).removeClass(settings.style.selected);
sibling.children("." + settings.style.icon_expand).removeClass(settings.style.icon_expand).addClass(settings.style.icon_collapse);
if (data.childrens) {
item.addClass(settings.style.selected);
header.find("." + settings.style.icon_collapse).removeClass(settings.style.icon_collapse).addClass(settings.style.icon_expand);
if (settings.fill) {
var count = item.parent().data("count") - 1;
item.css("height", "calc(100% - " + (item.height() * count) + "px)");
}
} else {
header.addClass(settings.style.selected);
}
}
if (settings.onitemclick) {
settings.onitemclick(data);
}
},
update: function (url, param) {
var $this = $(this);
var settings = $this.data("tw.accordion");
if (typeof url == "object") {
settings.param = url;
} else {
settings.url = url;
settings.param = param;
}
$this.accordion("init", settings);
},
destroy: function (options) {
return $(this).each(function () {
var $this = $(this);
$this.removeData('accordion');
});
}
}
$.fn.accordion = function () {
var method = arguments[0];
var args = arguments;
if (typeof (method) == 'object' || !method) {
method = methods.init;
} else if (methods[method]) {