雖然,jQuery已經(jīng)非常好用了,但是實(shí)際的開(kāi)發(fā)項(xiàng)目中,還是有很多限制,比如項(xiàng)目組奇葩的要求,不能使用任何插件,當(dāng)然,也是考慮插件占用資源,畢竟100+KB對(duì)與小型項(xiàng)目來(lái)說(shuō)還是非常大的。我最近就遇到做個(gè)點(diǎn)擊展開(kāi)二級(jí)菜單的要求,當(dāng)然只能用原生的JS去寫(xiě)來(lái)實(shí)現(xiàn),我借鑒了網(wǎng)上的一個(gè)案例,補(bǔ)充一下,分享一下:
如果,默認(rèn)打開(kāi)頁(yè)面進(jìn)來(lái)時(shí)二級(jí)菜單是隱藏的,需要點(diǎn)擊才能展現(xiàn)二級(jí)菜單,再點(diǎn)擊就是隱藏二級(jí)菜單。這里有兩個(gè)點(diǎn),實(shí)現(xiàn)展現(xiàn)和隱藏用display="block"和display="none",另外就是要做一個(gè)判斷,if else的判斷當(dāng)前是block還是none。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> #sub_menu_1,#sub_menu_2{ display: none; } ul li:hover{ cursor: pointer; } </style> </head> <body> <ul> <li onclick = "f('sub_menu_1')">一級(jí)菜單1 <ul id="sub_menu_1"> <li>二級(jí)餐單1</li> <li>二級(jí)餐單1</li> <li>二級(jí)餐單1</li> <li>二級(jí)餐單1</li> </ul> </li> <li onclick="f('sub_menu_2')">一級(jí)菜單2 <ul id="sub_menu_2"> <li>二級(jí)菜單2</li> <li>二級(jí)菜單2</li> <li>二級(jí)菜單2</li> <li>二級(jí)菜單2</li> </ul> </li> <li>一級(jí)餐單3</li> </ul> <script type="text/javascript"> function f(str){ var sub_menu = document.getElementById(str); var dis_v = sub_menu.style.display; if(dis_v == "block") sub_menu.style.display = "none"; else sub_menu.style.display = "block"; } </script> </body> </html>
有個(gè)注意事項(xiàng)就是一級(jí)菜單的li不能添加a標(biāo)簽,不然會(huì)不起作用。
如果,你的頁(yè)面默認(rèn)進(jìn)來(lái)二級(jí)菜單是展現(xiàn)的,點(diǎn)擊時(shí)才關(guān)閉。直接把style標(biāo)簽的樣式display="none"去掉就可以。同時(shí)需要修改一下js。
<script type="text/javascript"> function f(str){ var sub_menu = document.getElementById(str); var dis_v = sub_menu.style.display; if(dis_v == "none") sub_menu.style.display = "block"; else sub_menu.style.display = "none"; } </script>