2017-06-08 1 views

Répondre

1

D'une manière plus courte, vous pouvez parcourir les clés d'objet json à l'aide Object.keys() et Array.prototype.forEach():

$.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

qui fonctionne aussi bien et est plus courte! Merci beaucoup, désolé d'accepter la réponse d'Icepickle comme il affiche d'abord, mais appréciez vraiment! – thebigE

+0

@ thibault423 Vous ne devriez pas se soucier des timings, sa réponse évite le besoin de lier la propriété, donc cela ne me dérangerait pas si c'est la réponse;) – Icepickle

+0

@Icepickle Si vous ne faites pas alors alors =) Merci beaucoup! – thebigE

2

Vous pouvez le faire en boucle sur les propriétés de votre objet JSON comme si

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

Merci Icepickle, ce déclencheur que les données de l'Australie:/ – thebigE

+0

@ thibault423 Oh désolé, c'était parce que j'oublié de voir le rappel;) je maintenant prop lié à la fonction onclick donc vous devriez voir maintenant les deux pays;) – Icepickle

+0

incroyable, merci beaucoup !! – thebigE

0

Une dernière chose que j'essaie de faire est d'appeler les données Json à partir d'un fichier externe

J'ai essayé d'envelopper la fonction dans

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

sans succès ...

il me dit sur la ligne que JSON n'est pas définie (dans la console)

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

une idée?

Merci beaucoup!

--update JSON STRUCTURE ----

{ 
    "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

Dans ce cas, vous devez utiliser 'data' au lieu de' json' –

+0

hm J'ai essayé de remplacer $ getJSON par $ getdata et Object.keys (json) par Object.keys (data) et j'ai toujours la même erreur :/ – thebigE

+0

Do: '$ .getJSON ('js/data.json', fonction (json) {// code solution ici});' –