一个web左侧菜单例子

190 篇文章 6 订阅
150 篇文章 1 订阅

一 左侧菜单简介并更换图标

图图:










码码:

<link rel="stylesheet" type="text/css" href="js/tree_themes/SimpleTree.css"/>
<script type="text/javascript" src="js/jquery-1.6.min.js"></script>
<script type="text/javascript" src="js/SimpleTree.js"></script>
<script type="text/javascript">
$(function(){
	$(".st_tree").SimpleTree({
		click:function(a){
			if(!$(a).attr("hasChild"))
				alert($(a).attr("ref"));
		}
	});
});
</script>
</head>
<body>

<div class="st_tree">
<ul>
	<li><a href="#" ref="hyjm">欢迎界面</a></li>
	<li><a href="#" ref="xtgl">系统管理</a></li>
    <ul show="true">
		<li><a href="#" ref="yhgl">用户管理</a></li>
		<li><a href="#" ref="rzck">日志查看</a></li>
	</ul>
	<li><a href="#" ref="ckgl">仓库管理</a></li>
    <ul>
		<li><a href="#" ref="kcgl">库存管理</a></li>
		<li><a href="#" ref="shgl">收货管理</a></li>
		<li><a href="#" ref="fhgl">发货管理</a></li>
        <ul>
            <li><a href="#" ref="yhgl">用户管理</a></li>
            <li><a href="#" ref="rzck">日志查看</a></li>
        </ul>
	</ul>
</ul>
</div>

</body>


    这是一个较常用的网上可下载到的左侧菜单例子;

    图1 是其运行效果;

    首先定义div,其css类为st_tree;

    然后定义列表ul;每个li为一个一级菜单;

    下级菜单再在某个li下定义ul li列表;


    下面改造一下,把图标换成兔兔图标看看;

    换完之后一看,效果如图2;图标重叠了,兔子都看不到;黑兔子图标并挡住了字;

    先把黑兔子换成白兔子,然后调整css文件内容;


/* 菜单项 */
.st_tree ul li{ 
	font-size:13px; 
	color:#222; 
	line-height:18px; 
	cursor:pointer;
	list-style:none; 
	background:url(imgs/tutu2.png); 
	background-repeat:no-repeat; 
	padding:0 0 50px 20px;
}

/* 子菜单 */
.st_tree ul li ul{}

/* 子菜单项 */
.st_tree ul li ul li{}

/* 子菜单的父节点 */
.st_tree .folder{ 
	list-style-image:url(imgs/st_icon.png); 
	background:url(imgs/tutu3.png); 
	background-repeat:no-repeat; 
	padding:0 50 0 20px; 
}

/* 展开的父节点 */
.st_tree .open{ 
	list-style-image:url(imgs/st_icon_open.png); 
	background:url(imgs/tutu1.png); 
	background-repeat:no-repeat; 
	padding:0 50 0 20px; 
}

把相关的三个上或下边距由0改为50;再运行;好了;效果如图3、4;

兔子出来了;

现在可以查看兔子库存、收兔子、发兔子......;


源码下载:

http://pan.baidu.com/s/1CzwRk

看下我的兔子图标,相当的可爱;


二 SimpleTree.js分析

$(function(){
	$.fn.extend({
		SimpleTree:function(options){
			
			//初始化参数
			var option = $.extend({
				click:function(a){ }
			},options);
			
			option.tree=this;	/* 在参数对象中添加对当前菜单树的引用,以便在对象中使用该菜单树 */
			
			option._init=function(){
				/*
				 * 初始化菜单展开状态,以及分叉节点的样式
				 */				
				this.tree.find("ul ul").hide();	/* 隐藏所有子级菜单 */
				this.tree.find("ul ul").prev("li").removeClass("open");	/* 移除所有子级菜单父节点的 open 样式 */
				
				this.tree.find("ul ul[show='true']").show();	/* 显示 show 属性为 true 的子级菜单 */
				this.tree.find("ul ul[show='true']").prev("li").addClass("open");	/* 添加 show 属性为 true 的子级菜单父节点的 open 样式 */
			}/* option._init() End */
			
			/* 设置所有超链接不响应单击事件 */
			this.find("a").click(function(){ $(this).parent("li").click(); return false; });
			
			/* 菜单项 <li> 接受单击 */
			this.find("li").click(function(){
				/*
				 * 当单击菜单项 <li>
				 * 1.触发用户自定义的单击事件,将该 <li> 标签中的第一个超链接做为参数传递过去
				 * 2.修改当前菜单项所属的子菜单的显示状态(如果等于 true 将其设置为 false,否则将其设置为 true)
				 * 3.重新初始化菜单
				 */
				
				option.click($(this).find("a")[0]);	/* 触发单击 */
				
				/* 
				 * 如果当前节点下面包含子菜单,并且其 show 属性的值为 true,则修改其 show 属性为 false
				 * 否则修改其 show 属性为 true
				 */
				if($(this).next("ul").attr("show")=="true"){
					$(this).next("ul").attr("show","false");					
				}else{
					$(this).next("ul").attr("show","true");
				}
				
				/* 初始化菜单 */
				option._init();
			});
			
			/* 设置所有父节点样式 */
			this.find("ul").prev("li").addClass("folder");
			
			/* 设置节点“是否包含子节点”属性 */
			this.find("li").find("a").attr("hasChild",false);
			this.find("ul").prev("li").find("a").attr("hasChild",true);
			
			/* 初始化菜单 */
			option._init();
			
		}/* SimpleTree Function End */
		
	});
});




主要是初始化参数和函数,a和li的点击函数;样式和属性设置;

$.fn.extend({ 是什么

jQuery为开发插件提拱了两个方法,分别是:

jQuery.fn.extend();
jQuery.extend();


jQuery.extend(object)

为jQuery类添加类方法,可以理解为添加静态方法

jQuery.fn.extend(object);

对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。

参阅
http://caibaojian.com/jquery-extend-and-jquery-fn-extend.html


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值