一部の JSON オブジェクトの表示に問題があります。thenを使用してオブジェクトを表示する$.each()
と、画面に 2 回表示されます。$.each()
オブジェクトを表示するために使用しない場合、一度表示されます。以下の例は、ルーラー コンテンツが 2 回読み込まれることを示していますが、テキスト コンテンツは 1 回だけ読み込まれます。
JSON ファイルは 1 回だけ呼び出されます。Firebugを使用してこれを確認しました。
jQuery 1.8.0を使用し、history.jsプラグインを使用しています
JSON ファイルは、jsonlint.com を使用して検証されます。
要素が 2 回表示されている理由を調べる必要があります。どんな助けでも大歓迎です。ありがとう
コード:
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 は 2 回実装されます。
{
"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"
}
}
}
}