網站導航要實現的效果類似於:
我搜尋了,發現都是ajax發送請求實現聯動。我的要求是不發送請求,直接在php檔案或html檔案裡寫,再通過jquery實現下拉效果。
目錄導航的數組如下:level=0表示第1層,緊跟的level=1/2……表示是第1層的子功能表。
Array( [0] => Array ( [cat_id] => 3 [cat_name] => JavaScript [parent_id] => 0 [level] => 0 ) [1] => Array ( [cat_id] => 5 [cat_name] => Jquery [parent_id] => 3 [level] => 1 ) [2] => Array ( [cat_id] => 6 [cat_name] => JS進階 [parent_id] => 3 [level] => 1 ) [3] => Array ( [cat_id] => 4 [cat_name] => PHP [parent_id] => 0 [level] => 0 ))
html代碼如下:
回複內容:
網站導航要實現的效果類似於:
我搜尋了,發現都是ajax發送請求實現聯動。我的要求是不發送請求,直接在php檔案或html檔案裡寫,再通過jquery實現下拉效果。
目錄導航的數組如下:level=0表示第1層,緊跟的level=1/2……表示是第1層的子功能表。
Array( [0] => Array ( [cat_id] => 3 [cat_name] => JavaScript [parent_id] => 0 [level] => 0 ) [1] => Array ( [cat_id] => 5 [cat_name] => Jquery [parent_id] => 3 [level] => 1 ) [2] => Array ( [cat_id] => 6 [cat_name] => JS進階 [parent_id] => 3 [level] => 1 ) [3] => Array ( [cat_id] => 4 [cat_name] => PHP [parent_id] => 0 [level] => 0 ))
html代碼如下:
不用ajax,一次把所有資料都讀出來,但是hide show 的效果必須要js了,有幾種方法,可以php裡把資料做成json,在js裡調用show hide,也可以直接把全部array先在頁面上顯示成link預設hide,然後根據點哪個show哪個。
---下面是把array先在頁面上產生html,但是根據不同class值來判斷show/hide
把每層都查出來,把原來用0、1、2的array key 改成用每組資料的屬性當做可以,如下:
array( 'l1' => array( key1 => value1, key2 => value2, key3 => value3 ), 'l2' => array( key1 => value1, key2 => value2, key3 => value3 ) .......);
給每層array key都附上值,全部產生出來,根據key value 不同在link上產生不同的class,預設全部hide,然後click哪個按鈕就顯示哪個吧,幾個if elseif else搞定,因為每組資料都有key了,可以簡單地判斷哪個按鈕對應那組資料。
在顯示之前把它們都查出來,只是用js預設不顯示它們,等點擊再顯示它們
不是很明確你的意思,是要實現這樣無限級樹形菜單麼?
3, "cat_name" => "JavaScript", "parent_id" => 0, "level" => 0), Array("cat_id" => 5, "cat_name" => "Jquery", "parent_id" => 3, "level" => 1), Array("cat_id" => 6, "cat_name" => "JS進階", "parent_id" => 3, "level" => 1), Array("cat_id" => 7, "cat_name" => "JS進階更進階1", "parent_id" => 6, "level" => 3), Array("cat_id" => 8, "cat_name" => "JS進階更進階2", "parent_id" => 6, "level" => 3), Array("cat_id" => 9, "cat_name" => "JS進階更進階3", "parent_id" => 6, "level" => 3), Array("cat_id" => 4, "cat_name" => "PHP", "parent_id" => 0, "level" => 0), Array("cat_id" => 10, "cat_name" => "PHP進階1", "parent_id" => 4, "level" => 0), Array("cat_id" => 12, "cat_name" => "PHP進階2", "parent_id" => 4, "level" => 0), Array("cat_id" => 13, "cat_name" => "PHP進階3", "parent_id" => 4, "level" => 0) );//建立樹形菜單 function createTree(&$arr, $parent_id) { $hide = ""; if ($parent_id != 0) { $hide = "hidden"; } $funcName = __FUNCTION__; $ul = ""; $li = ""; for ($i = 0; $i < count($arr); $i++) { if ($arr[$i]["parent_id"] == $parent_id) { $child = $funcName($arr, $arr[$i]['cat_id']); $li .= "\r\n{$arr[$i]["cat_name"]}{$child}\r\n"; } } if ($li != "") { $ul = "
"; } return $ul; } echo createTree($arr, 0); ?>
- 將所有的資料積極式載入進來,賦給一個js變數。每次選擇串聯功能表,都從這個變數讀取資料。
- 這樣做相當於把ajax分次請求的資料一次請求下來。
php echo 一個json資料給js的變數
預先在頁面中產生json格式資料,傳遞給js就可以了。