功能:【Juqery级联(ul仿select级联)】
说明:最近做一个网站项目遇到的问题,需要美化select,所以就用ul模拟select, 之后就遇到个大问题了,就是要级联,select的话还好级联,现在是ul,所以级联就非常麻烦了.....需要实现:数组,循环,取值,赋值,清值,等等..
Jquery代码:
<script type="text/javascript">
$(document).ready(function(){
$('.select_box').mouseleave(function(){
$(".son_Ul").hide();
});
$('.select_box span').click(function(){ //鼠标移动函数
$('.son_Ul').hide(); //初始ul隐藏
$(this).parent().find('ul.son_Ul').show(); //找到ul.son_Ul显示
$(this).parent().find('li').hover(function(){
$(this).addClass('hover')},function(){$(this).removeClass('hover')}); //li的hover效果
$(this).parent().click(function(){},
function(){
$(this).parent().find("ul.son_Ul").hide();
}
);
},function(){}
);
$('ul.son_Ul li').click(function(){
$(this).parents('li').find('span').html($(this).html());
$(this).parents('li').find('ul').hide();
});
});
//第一次写demo,很冗长,见谅 larthas@vip.qq.com www.515best.com www.hicafe.cn By:larthas
</script>
<script type="text/javascript">
var arrays = {
'0':['中国','美国']
,'中国':['广东','河南','河北']
,'广东':['广州','深圳']
,'河南':['郑州','平顶山']
,'郑州':['金水区','大学城']
,'金水区':['XX路','YY']
,'XX路':['19号','22号']
,'19号':['1','2']
,'1':['a','b']
,'a':['A','B']};
$(document).ready(function(){
var guojia = arrays['0'];
$.each(guojia,function(i,value){
$("#guojia").append("<li onclick='c(this,\"guojia\",\"shengfen\",\"chengshi\",\"xx\",1)'>"+value+"</li>");
})
})
function c(val,prev,next,nnext,nnnext,blo){
/**
val 是当前点击的li
prev 是当前所属ul
next 是下一个需要填充的ul
nnext 是下下个需要填充的ul 即点击next后需要填充的<ul></ul>
*/
var checkVal = $(val).text();
var cr = document.getElementById(prev);
var ne = document.getElementById(next);
$(cr).prev().text(checkVal);
$(ne).prev().text('请选择');
aa($(cr).attr("id"));
var datas = arrays[checkVal];
$.each(datas,function(i,value){//遍历填充到下一级的ul中
var li;
switch(blo){
case 1:
li = "<li onclick='c(this,\""+next+"\",\""+nnext+"\",\""+nnnext+"\",\"yy\",2)'>"+value+"</li>";
break;
case 2:
li = "<li onclick='c(this,\""+next+"\",\""+nnext+"\",\"yy\",\"zz\",3)'>"+value+"</li>";
break;
case 3:
li = "<li onclick='c(this,\""+next+"\",\""+nnext+"\",\"zz\",\"aa\",4)'>"+value+"</li>";
break;
case 4:
li = "<li onclick='c(this,\""+next+"\",\""+nnext+"\",\"aa\",\"bb\",5)'>"+value+"</li>";
break;
case 5:
li = "<li onclick='c(this,\""+next+"\",\""+nnext+"\",\"bb\",\"cc\",6)'>"+value+"</li>";
break;
case 6:
li = "<li onclick='c(this,\""+next+"\",\""+nnext+"\",\"cc\",\"\",7)'>"+value+"</li>";
break;
case 7:
li = "<li onclick='c(this,\""+next+"\",\""+nnext+"\",\"\",\"\",8)'>"+value+"</li>";
break;
case 8:
li = "<li onclick=\"$(this).parent().prev().text($(this).text());\">"+value+"</li>";
break;
}
$(ne).append(li);
})
}
</script>
<script type="text/javascript">
function aa(id){
var t = document.getElementById(id);
$(t).parent().parent().nextAll("ul").each(function(i,v){
$(v).find("ul.son_Ul").each(function(i,ul){
$(ul).prev().text("请选择");
$(ul).find("li").each(function(i,li){
$(li).remove();
})
})
})
}
</script>
HTML代码:
<body>
<ul class="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:200"> <span>请选择</span>
<ul class="son_Ul" id="guojia">
</ul>
</li>
</ul>
<ul class="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:200"> <span>请选择</span>
<ul class="son_Ul" id="shengfen">
</ul>
</li>
</ul>
<br style="clear:both" />
<ul id="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:199"> <span>请选择</span>
<ul class="son_Ul" id="chengshi">
</ul>
</li>
</ul>
<ul class="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:199"> <span>请选择</span>
<ul class="son_Ul" id="xx">
</ul>
</li>
</ul>
<br style="clear:both" />
<ul id="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:198"> <span>请选择</span>
<ul class="son_Ul" id="yy">
</ul>
</li>
</ul>
<ul class="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:198"> <span>请选择</span>
<ul class="son_Ul" id="zz">
</ul>
</li>
</ul>
<ul class="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:198"> <span>请选择</span>
<ul class="son_Ul" id="aa">
</ul>
</li>
</ul>
<ul class="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:198"> <span>请选择</span>
<ul class="son_Ul" id="bb">
</ul>
</li>
</ul>
<ul class="main_box">
<span class="point">*</span>
<li class="select_box" style="z-index:198"> <span>请选择</span>
<ul class="son_Ul" id="cc">
</ul>
</li>
</ul>
</body>
CSS样式:
<style type="text/css">
<!--
body {
padding:10px;
background:#eee;
color:#666
}
* {
margin:0;
padding:0;
font-size:12px;
}
ul, li {
list-style-type:none;
margin: 0px;
padding: 0px;
}
.point {
color: #a40000;
float: left;
display: block;
height: 30px;
line-height: 30px;
}
.select_box {
float:left;
width:65px;
padding-right:10px;
padding-left:10px;
url(left-selectbg.gif ) no-repeat 65px center;
position:relative;
z-index:101;
}
.select_box span {
cursor:pointer;
display:block;
line-height:25px;
width:100%;
height:25px;
overflow:hidden;
}
.select_box ul li {
cursor:pointer;
}
.son_Ul {
width:75px;
;
position:absolute;
z-index:101;
left:-1px;
top:25px;
border:1px solid #ccc;
display: none;
background-color: #fff;
}
.son_Ul li {
display:block;
line-height:25px;
padding-left:10px;
width:65px;
}
.hover {
background:#ccc;
}
-->
</style>
---------------成功例子已上传附件,有需要的可以下载
附件:http://down.51cto.com/data/2362267