私はjsonツリーからHTMLメニューを出力するこのjQueryスクリプトを持っています。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();
});
});
});
ありがとう、これは多くの助けになります。あなたが言ったように、それは完全には機能しませんが、私はそれを働かせるでしょう、これは良いキックスタートです! – Mitch
問題はありません!はい、申し訳ありませんが、コードはあなたのためには機能しませんでしたが、私は問題をコーディングの問題ではなく、より概念的なものと見ていました。私は少なくともこれが正しいトラックにあなたを得るだろうと知っていた:) – lscmaro