對于具有多個層級的菜單,我們通常需要利用遞歸的方式來輸出。在本文中,我們將通過使用jQuery來實現遞歸輸出層級菜單的功能。
首先,我們需要準備一個層級嵌套的菜單結構,并在其中添加數據屬性來標識其所屬的層級。例如:
接下來,我們使用jQuery來編寫遞歸函數。
這個函數接受兩個參數,第一個是當前的菜單元素,第二個是當前的層級。首先,它找到所有屬于當前層級的子菜單元素。如果子菜單元素存在,我們就創建一個ul元素,并遍歷每個子菜單元素,將其轉化為li元素并添加到ul中。接下來,我們遞歸地對子菜單進行相同的操作,直到沒有子菜單為止。最后,將ul元素返回。
最后,我們調用renderMenu函數并將其返回的ul元素添加到HTML文檔中即可。
在這段代碼中,我們找到頂層的菜單元素,并將其傳遞給renderMenu函數。函數返回的ul元素將替換原有的菜單元素。
通過這種方式,我們可以使用jQuery來方便地遞歸輸出任意層級的菜單結構。
首先,我們需要準備一個層級嵌套的菜單結構,并在其中添加數據屬性來標識其所屬的層級。例如:
<ul id="menu"> <li data-level="1">一級菜單1 <ul> <li data-level="2">二級菜單1-1</li> <li data-level="2">二級菜單1-2 <ul> <li data-level="3">三級菜單1-2-1</li> </ul> </li> </ul> </li> <li data-level="1">一級菜單2</li> </ul>
接下來,我們使用jQuery來編寫遞歸函數。
function renderMenu($menu, level) { var $children = $menu.children('li[data-level="' + level + '"]'); if ($children.length) { var $ul = $('<ul>'); $children.each(function() { var $li = $('<li>').html($(this).html()); $ul.append($li); var $subMenu = $(this).children('ul'); if ($subMenu.length) { $li.append(renderMenu($subMenu, level + 1)); } }); return $ul; } else { return null; } }
這個函數接受兩個參數,第一個是當前的菜單元素,第二個是當前的層級。首先,它找到所有屬于當前層級的子菜單元素。如果子菜單元素存在,我們就創建一個ul元素,并遍歷每個子菜單元素,將其轉化為li元素并添加到ul中。接下來,我們遞歸地對子菜單進行相同的操作,直到沒有子菜單為止。最后,將ul元素返回。
最后,我們調用renderMenu函數并將其返回的ul元素添加到HTML文檔中即可。
$(document).ready(function() { var $menu = $('#menu'); var $ul = renderMenu($menu, 1); if ($ul) { $menu.html($ul); } });
在這段代碼中,我們找到頂層的菜單元素,并將其傳遞給renderMenu函數。函數返回的ul元素將替換原有的菜單元素。
通過這種方式,我們可以使用jQuery來方便地遞歸輸出任意層級的菜單結構。