Im在顯示一些JSON對象時遇到了一些麻煩。如果使用$.each()
顯示對象,則它將在屏幕上顯示兩次。如果我不使用$.each()
來顯示對象,那麼它會顯示一次。下面的示例顯示標尺內容將被加載兩次,但文本內容將只加載一次。JSON元素在調用後顯示兩次
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"
}
}
}
}
您可以發佈JSON字符串的示例,以便我們可以看到您正在迭代的內容嗎?此外,我建議升級到1.8.2,它修復了1.8.0中發現的幾個錯誤(如IE9開火。已經太早)。儘管如此,它很可能不會影響您目前的問題。 –
htmlRuler定義在哪裏? –
你是否在任何地方初始化或重置'htmlRuler'?它現在的樣子是,你總是在每個getJSON調用中向htmlRuler附加文本,然後將所有內容附加到.RulerDiv。再次沒有重置.RulerDiv任何地方。 – Andy