一、效果图
二、核心代码
<script src="js/treemenu.js"></script>
<script>
$("#menu").Init({
backGround: "#4667d8",
color: '#fff',
data: menu
})
</script>
function (window){
var instance;
$.fn.extend({
Init:function(settings){
if(!instance){
instance=new Tree();
}
setting.parentEle=$(this);
instance.options= $.extend({},setting,settings);
instance._init();
}
});
var setting={
backGround:'#fff',
color:'#000',
parentEle:null,
data:null,
}
function Tree(){
}
Tree.prototype.options={};
Tree.prototype._init=function(){
var that=this,opt=this.options,menudata=opt.data;
if(menudata){
that.renderHtml();
that.addHandle();
}
else{
throw new Error("需要获取菜单数据!");
}
}
Tree.prototype.renderHtml= function () {
var that=this,opt=this.options,menudata=opt.data;
opt.menuItem=$("<ul class='menuItem'></ul>");
opt.menuItem.css({
backgroundColor: opt.backGround,
color: opt.color
});
opt.firstLi='';
menudata.map(function(item,index){
var li=$("<li class='fli'></li>");
var cdiv=$("<div class='fli_div'></div>");
var icon=$("<i class='iconfont'>"+item.icon+"</i>");
var sname=$("<span>"+item.name+"</span>");
cdiv.append(icon);
cdiv.append(sname);
li.append(cdiv);
opt.menuItem.append(li);
if(item.child){
var tou=$("<span class='iconfont btn'>∧</span>");
cdiv.append(tou);
var childmenu=$("<ul class='cmenuItem'></ul>");
item.child.map(function(citem){
var cli=$("<li></li>");
var ca=$("<a href=''>"+citem.name+"</a>");
ca.css({color:opt.color});
cli.append(ca);
childmenu.append(cli);
});
li.append(childmenu);
}
});
opt.parentEle.append(opt.menuItem);
};
Tree.prototype.addHandle=function(){
var that=this,opt=this.options;
$(".fli").each(function(index){
$(this).on("mouseover",function(){
$(this).children(".fli_div").addClass('fli_hover');
}).on("mouseleave",function(){
$(this).children(".fli_div").removeClass('fli_hover');
});
});
$(".cmenuItem>li").each(function(index){
$(this).on("mouseover",function(){
$(this).addClass('hover_child');
}).on("mouseleave",function(){
$(this).removeClass('hover_child');
});
});
var change=false;
$(".fli_div").each(function(index){
$(this).click(function(){
change=!change;
$(this).siblings('.cmenuItem').slideToggle();
$(this).children(".btn").html(change?'∨' : '∧');
})
});
} })(window);