我正在使用多级图库创建网站。 我使用json存储数据:它看起来像这样:
{
"fashion":[
{
"alt":"Album1",
"src":"img/gsp_sait-03_02.png",
"class":"albumItem",
"id":"FashionAlbum1",
"album":[
{
"alt":"albumImg1",
"src":"img/gsp_sait-03_02.png",
"id":"FashionSubFolder1Img1"
},
{
"alt":"albumImg2",
"src":"img/gsp_sait-03_03.png",
"id":"FashionSubFolder1Img2"
}
]
}
],
"beauty":[
{
"alt":"Album1",
"src":"img/gsp_sait-03_02.png",
"class":"albumItem",
"id":"BeautyAlbum1",
"album":[
{
"alt":"albumImg1",
"src":"img/gsp_sait-03_02.png",
"id":"BeautySubFolder1Img1"
},
{
"alt":"albumImg2",
"src":"img/gsp_sait-03_03.png",
"id":"BeautySubFolder1Img2"
}
]
}
],
"wedding":[
{
"alt":"Album1",
"src":"img/gsp_sait-03_02.png",
"class":"albumItem",
"id":"WeddingAlbum1",
"album":[
{
"alt":"albumImg1",
"src":"img/gsp_sait-03_02.png",
"id":"WeddingSubFolder1Img1"
},
{
"alt":"albumImg2",
"src":"img/gsp_sait-03_03.png",
"id":"WeddingSubFolder1Img2"
}
]
}
]
}
我找不到如何选择正确类别的方法。 让我们说用户点击美女,所以我需要选择“美女”部分, 我用这个函数:
$.getJSON("data/data.json", function(data) {
$.each(data.beauty, function(i, data) {
var img = "<li><img class='" + data.class + "' id='" + data.id + "' src='" + data.src + "' alt='" + data.alt + "' /></li>";
$(".albumsList").append(img);
});
});
我需要让它变得动态。 我试图插入一个包含类别的变量,而不是“美丽”在行中:
$.each(data.beauty, function (i, data)
但它不起作用,或者我以错误的方式做到了。 有什么方法可以让它变得动态,也许我的json文件不能满足这些需求吗?
第二件事,当用户选择专辑时,(“美女”部分)我想要显示这张专辑中的所有照片。
$.getJSON("data/data.json", function(data) {
$.each(data.beauty[0].album, function(i, data) {
var img = "<li><img ' id='" + data.id + "' src='" + data.src + "' alt='" + data.alt + "' /></li>";
$(".albumPhotosList").append(img).hide().fadeIn(500);
});
});
但问题是一样的,我需要它是动态的。
我非常感谢你的帮助。我真的很喜欢。 谢谢你们差异很大!
答案 0 :(得分:0)
对于第一个问题,当用户单击链接时,您可以传递链接文本(或通过自定义属性)来查找json属性。例如,假设您的链接如下所示:
<a href="#" data-jsonproperty="fashion">Fashion</a>
<a href="#" data-jsonproperty="beauty">Beauty</a>
<a href="#" data-jsonproperty="wedding">Wedding</a>
对于第一个问题,您可以像这样编写脚本:
$(".link").click(function() {
var jsonProperty = $(this).data("jsonproperty");
$.getJSON("data/data.json", function(data) {
$.each(data[jsonProperty], function(i, data) {
var img = "<li><img class='" + data.class + "' id='" + data.id + "' src='" + data.src + "' alt='" + data.alt + "' /></li>";
$(".albumsList").append(img);
});
});
});
您可以类似地解决第二个问题:
$.getJSON("data/data.json", function(data) {
$.each(data[jsonProperty][0].album, function(i, data) {
var img = "<li><img ' id='" + data.id + "' src='" + data.src + "' alt='" + data.alt + "' /></li>";
$(".albumPhotosList").append(img).hide().fadeIn(500);
});
});