更新時間:2022-03-21 來源:黑馬程序員 瀏覽量:
在menu.html中添加jQuery代碼,實現(xiàn)菜單的折疊特效。
menu.html 圖2-17 靜態(tài)頁面效果
<script src="js/jquery-1.12.4.js"></script> <script> //隱藏所有二級菜單 $('.menu-head + div').hide(); //顯示當前,隱藏其他 $('.menu-head').click(function() { //設置當前菜單右側圖標樣式 $(this).css('backgroundImage', 'url(img/pro_down.png)'); //顯示當前菜單對應的子菜單 $(this).next('div').show(); //獲取其他菜單外層的li元素 var parentli = $(this).parent('li'); var lis = parentli.siblings('li'); //找到每個li元素下的主菜單,設置主菜單右側圖標樣式 lis.children('p').css('backgroundImage', 'url(img/pro_left.png)'); //隱藏其他主菜單下的子菜單 lis.children('div').hide(); }); </script>
上述代碼中,選擇器“.menu——head+div”可獲取所有菜單項下的子菜單,調用jQuery提供的hide()方法即可完成所有子菜單的隱藏。然后在class值為menu——head的元素上注冊單擊事件,每當單擊事件被觸發(fā)時,執(zhí)行第7~18行代碼進行相關的處理。
下面分別對第7~18行代碼進行重點講解,具體如下所示。
·第8行使用css()方法設置被單擊的p元素的圖標。
·第10行使用next()方法找到p元素下的div元素,并調用jQuery提供的show()方法顯示匹配到的元素。
·第12行使用parent()方法找到p元素上級的li元素,并使用變量parentli保存。
·第13行使用parentli調用siblings()方法找到其他同級的li元素,即一級菜單。
·第15行使用children()方法找到同級li元素的子元素p,并使用css()方法設置要顯示的圖標。
·第18行使用children()方法獲取同級li元素下的div元素,并調用jQuery提供的hide()方法隱藏匹配到的元素。
添加上述jQuery代碼后,本案例的全部代碼已經給出,測試方法讀者可以參考案例展示。