菜單樹是常見的前端特效, 一般長下面這樣
還有各種形態(tài)的變種, 有長這樣的
也有長這樣的
盡管這些菜單的相貌都不盡相同, 在功能實(shí)現(xiàn)的本質(zhì)上卻都是相同的。實(shí)現(xiàn)程序的大致流程如下
讀取服務(wù)器端的菜單數(shù)據(jù)
將數(shù)據(jù)轉(zhuǎn)換成html菜單結(jié)構(gòu)
為菜單結(jié)構(gòu)綁定各種交互事件,如展開、關(guān)閉等。
然而, 隨著需求的變化, 菜單往往會(huì)需要一些基礎(chǔ)之外的功能, 比如說添加菜單項(xiàng)、刪除菜單項(xiàng)、修改菜單名、拖拽子菜單至其它父菜單項(xiàng)之下等, 實(shí)現(xiàn)這些額外的功能將增加菜單制作的難度。就拿添加菜單項(xiàng)這個(gè)功能來講, 添加菜單項(xiàng)事件中代碼的常規(guī)實(shí)現(xiàn)流程如下
為菜單的html結(jié)構(gòu)添加一個(gè)菜單項(xiàng)元素結(jié)點(diǎn)并指定節(jié)點(diǎn)的名稱
將菜單新節(jié)點(diǎn)數(shù)據(jù)添加至初始化菜單html結(jié)構(gòu)的數(shù)據(jù)中
將新菜單的數(shù)據(jù)通過ajax發(fā)送至服務(wù)器端持久存儲(chǔ)