0
我有這個jQuery腳本從json樹輸出HTML菜單。jQuery - 隱藏主ul單擊子菜單
$(function() {
var data = {
menu: [{
name: 'Croatia',
link: '0',
sub: null
}, {
name: 'England',
link: '1',
sub: [{
name: 'Arsenal',
link: '0-0',
sub: null
}, {
name: 'Liverpool',
link: '0-1',
sub: null
}, {
name: 'Manchester United',
link: '0-2',
sub: null
}]
}, {
name: 'Spain',
link: '2',
sub: [{
name: 'Barcelona',
link: '2-0',
sub: null
}, {
name: 'Real Madrid',
link: '2-1',
sub: null
}]
}, {
name: 'Germany',
link: '3',
sub: [{
name: 'Bayern Munich',
link: '3-1',
sub: null
}, {
name: 'Borrusia Dortmund',
link: '3-2',
sub: null
}]
}]
};
var getMenuItem = function (itemData) {
var item = $("<li>")
.append(
$("<a>", {
href: '#' + itemData.link,
html: itemData.name
}));
if (itemData.sub) {
var subList = $("<ul>");
$.each(itemData.sub, function() {
subList.append(getMenuItem(this));
});
item.append(subList);
}
return item;
};
var $menu = $("#menu");
$.each(data.menu, function() {
$menu.append(
getMenuItem(this)
);
});
$menu.menu();
});
和HTML:
<script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.js"></script>
<ul id="menu"></ul>
,沒有工作,它輸出HTML菜單,但我想子菜單的被隱藏,直到訪問者點擊就可以了。
所以把它清除掉,我們把這個菜單,例如:
Primary Menu 1
- Submenu item 1
- Submenu item 1
Primary Menu 2
- Submenu item 2
- Submenu item 2
一旦訪問者點擊「主菜單1」,就應該隱藏所有的主菜單的,只顯示子菜單項。
我該如何獲得這個結果?
更新;設法得到它工作正常(JSON也裝載在不同的文件了。)
$(window).load(function(){
$(function() {
var getMenuItem = function (itemData) {
var item = $("<li>")
.append(
$("<a>", {
href: '#' + itemData.link,
html: itemData.name
}));
if (itemData.sub) {
var subList = $('<ul>', {'class':'sub-menu'});
$.each(itemData.sub, function() {
subList.append(getMenuItem(this));
});
item.append(subList);
}
return item;
};
var $menu = $("#menu");
$.each(data.menu, function() {
$menu.append(
getMenuItem(this)
);
});
$(".sub-menu").hide();
$("li").click(function (e) {
e.stopPropagation();
$(this).children('ul').slideToggle();
});
});
});
謝謝,這有助於很多。就像你說的那樣,它並沒有完全奏效,但我會讓它工作,這是一個很好的kickstarter! – Mitch
沒問題!對不起,代碼不適合你,但我認爲這個問題更像是'概念',而不是編碼問題。我知道至少這會讓你走上正軌:) – lscmaro