我這樣寫有點(diǎn)小問(wèn)題,點(diǎn)擊權(quán)限管理打開(kāi)后點(diǎn)擊部分管理1變色后,再點(diǎn)開(kāi)電池管理下面的部門管理2也變色了,是因?yàn)檠h(huán)ul的時(shí)候索引的問(wèn)題嗎,求指導(dǎo)請(qǐng)輸入代碼
請(qǐng)輸入代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue點(diǎn)擊切換顯示隱藏</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
<style type="text/css">
*{
padding: 0;
margin: 0;
font-size: 14px;
}
ul{
width: 200px;
height: auto;
}
h2{
background: green;
border: 1px solid #fff;
color: #fff;
height: 30px;
line-height: 30px;
text-indent: 24px;
}
h3{
background: #999;
height: 24px;
line-height: 24px;
border: 1px solid #fff;
text-indent: 50px;
}
a{
display: block;
width: 200px;
}
.zhe li.actives{
color: #fff;
background: red;
}
</style>
</head>
<body>
<div id="app">
<ul>
<li v-for="menu in menus" style="background:#ccc;margin:10px 0">
<a @click="toggle(menu)">{{menu.name}}</a>
<ul v-show="menu.open" style="background:green;" class="zhe">
<li v-for="(item,index) in menu.list" @click = "abc(index)" :class="{'actives':i==index}">{{item.name}}</li>
</ul>
</li>
</ul>
</div>
<script>
new Vue({
el: "#app",
data() {
return {
i:null,
menus: [
{
name: '權(quán)限管理',
open: false,
id:'aaa',
list: [
{
name: '用戶管理1'
},
{
name: '部門管理1'
},
{
name: '角色管理1'
},
{
name: '菜單管理1'
}
]
},
{
name: '電池管理',
open: false,
id:'bbb',
list: [
{
name: '用戶管理2'
},
{
name: '部門管理2'
},
{
name: '角色管理3'
},
{
name: '菜單管理4'
}
]
}
]
}
},
methods:{
toggle(item) {
if(!item.open){
this.menus.map((v)=>{
v.open=false
})
}
item.open=!item.open
},
abc(index){
this.i=0
this.i = index
},
}
})
</script>
</body>
</html>
在toggle方法后面加this.i = null
如果你還想再次點(diǎn)擊之前點(diǎn)擊的導(dǎo)航,其子級(jí)active不變,就在menus下面為每一個(gè)一級(jí)導(dǎo)航添加activeIndex
變量用于記錄子級(jí)導(dǎo)航的激活下標(biāo)。
這樣點(diǎn)擊了權(quán)限管理
下的角色管理1
,然后點(diǎn)擊電池管理
下的用戶管理2
,再次回到權(quán)限管理
,角色管理1
也是激活狀態(tài)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue點(diǎn)擊切換顯示隱藏</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
<style type="text/css">
*{
padding: 0;
margin: 0;
font-size: 14px;
}
ul{
width: 200px;
height: auto;
}
h2{
background: green;
border: 1px solid #fff;
color: #fff;
height: 30px;
line-height: 30px;
text-indent: 24px;
}
h3{
background: #999;
height: 24px;
line-height: 24px;
border: 1px solid #fff;
text-indent: 50px;
}
a{
display: block;
width: 200px;
}
.zhe li.actives{
color: #fff;
background: red;
}
</style>
</head>
<body>
<div id="app">
<ul>
<li v-for="(menu,menuindex) in menus" style="background:#ccc;margin:10px 0">
<a @click="toggle(menu)">{{menu.name}}</a>
<ul v-show="menu.open" style="background:green;" class="zhe">
<li v-for="(item,index) in menu.list" @click = "abc(index,menuindex)" :class="{'actives':menu.activeIndex==index}">{{item.name}}</li>
</ul>
</li>
</ul>
</div>
<script>
new Vue({
el: "#app",
data() {
return {
i:null,
menus: [
{
name: '權(quán)限管理',
open: false,
id:'aaa',
activeIndex:null,
list: [
{
name: '用戶管理1'
},
{
name: '部門管理1'
},
{
name: '角色管理1'
},
{
name: '菜單管理1'
}
]
},
{
name: '電池管理',
open: false,
id:'bbb',
activeIndex:null,
list: [
{
name: '用戶管理2'
},
{
name: '部門管理2'
},
{
name: '角色管理3'
},
{
name: '菜單管理4'
}
]
}
]
}
},
methods:{
toggle(item) {
if(!item.open){
this.menus.map((v)=>{
v.open=false
})
}
item.open=!item.open
},
abc(index,menuindex){
this.menus[menuindex].activeIndex = index
},
}
})
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue點(diǎn)擊切換顯示隱藏</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
<style type="text/css">
*{
padding: 0;
margin: 0;
font-size: 14px;
}
ul{
width: 200px;
height: auto;
}
h2{
background: green;
border: 1px solid #fff;
color: #fff;
height: 30px;
line-height: 30px;
text-indent: 24px;
}
h3{
background: #999;
height: 24px;
line-height: 24px;
border: 1px solid #fff;
text-indent: 50px;
}
a{
display: block;
width: 200px;
}
.zhe li.actives{
color: #fff;
background: red;
}
</style>
</head>
<body>
<div id="app">
<ul>
<li v-for="(menu,idx) in menus" style="background:#ccc;margin:10px 0">
<a @click="toggle(menu)">{{menu.name}}{{idx}}</a>
<ul v-show="menu.open" style="background:green;" class="zhe">
<li v-for="(item,index) in menu.list" @click = "abc(idx,index)" :class="{'actives':menu.i==index}">{{item.name}}</li>
</ul>
</li>
</ul>
</div>
<script>
new Vue({
el: "#app",
data() {
return {
menus: [
{
name: '權(quán)限管理',
open: false,
id:'aaa',
i:null,
list: [
{
name: '用戶管理1'
},
{
name: '部門管理1'
},
{
name: '角色管理1'
},
{
name: '菜單管理1'
}
]
},
{
name: '電池管理',
open: false,
id:'bbb',
i:null,
list: [
{
name: '用戶管理2'
},
{
name: '部門管理2'
},
{
name: '角色管理3'
},
{
name: '菜單管理4'
}
]
}
]
}
},
methods:{
toggle(item) {
if(!item.open){
this.menus.map((v)=>{
v.open=false;
v.i=null
})
}
item.open=!item.open
},
abc(idx,index){
this.menus[idx].i = index
},
}
})
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue點(diǎn)擊切換顯示隱藏</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
<style type="text/css">
* {
padding: 0;
margin: 0;
font-size: 14px;
}
ul {
width: 200px;
height: auto;
}
h2 {
background: green;
border: 1px solid #fff;
color: #fff;
height: 30px;
line-height: 30px;
text-indent: 24px;
}
h3 {
background: #999;
height: 24px;
line-height: 24px;
border: 1px solid #fff;
text-indent: 50px;
}
a {
display: block;
width: 200px;
}
.zhe li.actives {
color: #fff;
background: red;
}
</style>
</head>
<body>
<div id="app">
<ul>
<li v-for="(menu, idx) in menus" style="background:#ccc;margin:10px 0">
<a @click="toggle(menu)">{{menu.name}}</a>
<ul v-show="menu.open" style="background:green;" class="zhe">
<li v-for="(item,index) in menu.list" @click="abc(idx, item)" :class="item.isActive ? 'actives' : ''">{{item.name}}</li>
</ul>
</li>
</ul>
</div>
<script>
new Vue({
el: "#app",
data() {
return {
i: null,
menus: [{
name: '權(quán)限管理',
open: false,
id: 'aaa',
list: [{
name: '用戶管理1',
isActive: false
},
{
name: '部門管理1',
isActive: false
},
{
name: '角色管理1',
isActive: false
},
{
name: '菜單管理1',
isActive: false
}
]
},
{
name: '電池管理',
open: false,
id: 'bbb',
list: [{
name: '用戶管理2',
isActive: false
},
{
name: '部門管理2',
isActive: false
},
{
name: '角色管理3',
isActive: false
},
{
name: '菜單管理4',
isActive: false
}
]
}
]
}
},
methods: {
toggle(item) {
var index = this.menus.indexOf(item)
if (!item.open) {
this.menus.map((v, i) => {
if (i !== index) {
v.open = false
v.list.map(_o => {
_o.isActive = false
})
}
})
}
item.open = !item.open
},
abc(idx, item) {
this.menus[idx]['list'].forEach((o, i) => {
o.isActive = false
})
item.isActive = true
},
}
})
</script>
</body>
</html>
不知道是不是你想要的結(jié)果, 希望幫助到你
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。