我在显示一些 JSON 对象时遇到了一些问题。如果使用显示对象,$.each()
则它将在屏幕上显示两次。如果我不用$.each()
来显示对象,那么它会显示一次。下面的示例显示标尺内容将被加载两次,但文本内容只会被加载一次。
JSON 文件只被调用一次。我使用 Firebug 进行了检查。
我使用 jQuery 1.8.0 并使用 history.js 插件
JSON 文件使用 jsonlint.com 进行验证。
我需要找出为什么元素被显示两次。任何帮助表示赞赏。谢谢
编码:
function JSONLoader(page)
{
//The page is "about" page then..
if(page == 'about')
{
$.getJSON('about.json', function(data, textStatus){
var htmlRuler="";
$.each(data.person, function(pageIndex, page){
//The ruler content will load in twice
if(page.RulerDiv){
htmlRuler += '<ul>';
$.each(page.RulerDiv,function(rulerIndex, ruler){
htmlRuler += '<li><img class="'+ruler.imgClass+'" src="'+ruler.imgURI+'" alt="'+ruler.imgAlt+'" title="'+ruler.imgTitle+'"/></li>';
});
htmlRuler += '</ul>';
}
$('.RulerDiv').append(htmlRuler).fadeIn('slow');
//This loads the text in once only.
if(page.TextDiv){
var htmltext = '<p class="' + page.TextDiv.textClass+'">'+ page.TextDiv.Text + '</p>';
}
$('.TextDiv').append(htmltext).fadeIn('slow');
});
});
}
}
为此的一些示例 JSON。数组 RulerDiv 将被实现两次。
{
"person": {
"page": {
"RulerDiv": [
{
"imgURI": "../img/rulerButton.png",
"imgTitle": "",
"imgClass": "hover whoRulerDivImg",
"imgAlt" : ""
},
{
"imgURI": "../img/rulerButton2.png",
"imgTitle": "",
"imgClass": "hover RulerDivImg",
"imgAlt" : ""
}
],
"TextDiv": {
"wText" : "He is alive",
"textClass" : "fontClass"
}
}
}
}