<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
<title>Document</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
list-style: none;
}
.menuList li {
width: 20%;
float: left;
border-bottom: 1px solid #ccc;
font-size: 24px;
padding: 20px 0;
text-align: center;
background-color: #ccc;
}
</style>
</head>
<body>
<ul class="menuList">
<li class="menu">全部</li>
<li class="menu">待支付</li>
<li class="menu">待确认</li>
<li class="menu">待入住</li>
<li class="menu">已入住</li>
</ul>
<script type="text/javascript">
function siblings(elem){ //参数elem就是想取谁的兄弟节点,就把那个元素传进去
var nodes=[]; //定义一个数组,用来存elem的兄弟元素
var previ=elem.previousSibling;
while(previ){ //先取o的哥哥们 判断有没有上一个哥哥元素,如果有则往下执行 previ表示previousSibling
if(previ.nodeType===1){
nodes.push(previ);
}
previ=previ.previousSibling; //最后把上一个节点赋给previ
}
nodes.reverse(); //把顺序反转一下 这样元素的顺序就是按先后的了
var nexts=elem.nextSibling; //再取elem的弟弟
while(nexts){ //判断有没有下一个弟弟结点 nexts是nextSibling的意思
if(nexts.nodeType===1){
nodes.push(nexts);
}
nexts=nexts.nextSibling;
}
return nodes; //最后按从老大到老小的顺序,把这一组元素返回
}
var nowMenu = document.getElementsByClassName("menu"); //获取类名
for(var i=0; i<nowMenu.length; i++){
nowMenu[i].index = i; //设置下标值
nowMenu[i].onclick = function(){
var index = this.index; //获取下标值
var nowIndex = nowMenu[index]; //确认当前点击的标签
for(var m=0; m<nowMenu.length-1; m++){
this.style.background = "#999"; //改变当前点击元素背景
siblings(nowIndex)[m].style.background = "#ccc"; //改变当前点击的兄弟元素背景
}
}
}
</script>
</body>
</html>
做项目的时候,要用原生JS写,在做菜单点击切换的时候不能用JQ的.siblings()方法了,所以就百度了一下,现在贴上来,方便以后查看。
链接:
http://www.qdfuns.com/notes/31329/38c5cd103df53dfea036a381c24bcf49
