2017-06-08 5 views

答えて

1

のようなあなたのJSONオブジェクトのプロパティをループすることによってそれを行うことができます。

$.getJSON('js/data.json', function (json) { // <-- json variable 
    Object.keys(json).forEach(function (country) { 
    $(".marker." + country.toLowerCase()).on("click", function() { 
     $("#show").html(
     "Image: <img src=" + json[country][0].image + ">" + 
     "| Description: <h1>" + json[country][0].description) + "</h1>"; 
    }); 
    }); 
}); 
+0

も同様に短くなっています!ありがとう、たくさんの申し訳ありませんが、彼はポスターを最初にIcepickleから答えを受け入れるが、realylは感謝します! – thebigE

+0

@ thibault423あなたはタイミングを気にするべきではない、彼の答えはプロパティをバインドする必要性を避けるので、私はこれが答えであれば気にしない;) – Icepickle

+0

@Icepickleあなたがミントしていないなら=)たくさんありがとう! – thebigE

2

あなたがObject.keys()Array.prototype.forEach()を使用してjsonオブジェクトキーを反復処理することができます短いようにそう

var json = { 
    "France": [{ 
    "image": "img/ausralia.jpg", 
    "description": "number django 1" 
    }], 
    "Australia": [{ 
    "image": "img/ausralia.jpg", 
    "description": "number django 2" 
    }] 
} 

$(document).ready(function() { 
    // iterate all properties in the json object 
    for (var prop in json) { 
    if (json.hasOwnProperty(prop)) { 
     // add the marker items 
     $(".marker." + prop.toLowerCase()).on("click", function(country) { 
     $("#show").html(
      "Image : <img src=" + json[country][0].image + ">" + 
      "| Description : <h1>" + json[country][0].description) + "</h1>"; 
     }.bind(this, prop)); // prop needs to be bound so that the correct country is triggered 
    } 
    } 
}); 
+0

おかげIcepickle、これはちょうどオーストラリアからのデータをトリガー:私はコールバックを見るのを忘れているので/ – thebigE

+0

@ thibault423ああ申し訳ありませんが、それはあった。)今Iあなたが今両方の国を見るべきであるので、onclick関数にバインドされた小道具;) – Icepickle

+0

素晴らしい、ありがとう! – thebigE

0

最後に、私がしようとしているのは、外部ファイルからJsonデータを呼び出すことです。

私はfunctioをラップしようとしました成功なし

$.getJSON('js/data.json', function(data) { 

...

にそれは

Object.keys(json).forEach(function (country) { 

(コンソールで)JSONが定義されていないことをライン上の任意のアイデアを私に言っていますか?

ありがとうございます!

--update JSON構造----

{ 
    "france": [ 
     { 
      "image": "img/ausralia.jpg", 
      "description": "number django 1", 
     } 
    ], 
     "australia": [ 
     { 
      "image": "img/ausralia.jpg", 
      "description": "number django 2", 
     } 
    ], 

     "uk": [ 
     { 
      "image": "img/ausralia.jpg", 
      "description": "number django 3", 
     } 
    ] 
} 
+0

その場合、 'json'の代わりに' data'を使用する必要があります –

+0

hm $ getJSONをObject.keys(data)で$ getdataとObject.keys(json)に置き換えようとしましたが、 : – thebigE

+0

Do: '$ .getJSON( 'js/data.json'、function(json){//解決コードはここに});' –

関連する問題