2017-06-08 2 views

Antwort

1

In einem kürzeren Weg Sie über die json Objektschlüssel laufen kann mit Object.keys() und 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

das funktioniert auch und ist kürzer! Vielen Dank, Entschuldigung, ich akzeptiere die Antwort von Icepickle, wie er zuerst Poster, aber wirklich zu schätzen wissen! – thebigE

+0

@ thibault423 Sie sollten sich nicht um Timings kümmern, seine Antwort vermeidet die Notwendigkeit, die Eigenschaft zu binden, so hätte ich nichts dagegen, wenn dies die Antwort ist;) – Icepickle

+0

@Icepickle Wenn Sie nicht Minze dann =) Vielen Dank! – thebigE

2

Sie können es tun, indem über die Eigenschaften in der JSON-Objekt Looping wie so

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

Dank Icepickle, dieser Trigger nur die Daten aus Australien:/ – thebigE

+0

@ thibault423 Oh sorry, das war, weil ich den Rückruf zu sehen vergessen;) ich jetzt gebundene prop an die Onclick-Funktion, so dass Sie jetzt beide Länder sehen sollten;) – Icepickle

+0

erstaunlich, vielen Dank !! – thebigE

0

Eine letzte Sache, die ich versuche zu tun ist, die Json-Daten aus einer externen Datei

aufrufen Ich habe versucht, die Funktion zu wickeln in

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

ohne Erfolg ...

es mir auf der Linie erzählt, dass json (in der Konsole) nicht definiert ist

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

irgendeine Idee?

Vielen Dank!

--update JSON STRUKTUR ----

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

In diesem Fall müssen Sie 'data' anstelle von' json' verwenden. –

+0

hm Ich habe versucht, $ getJSON durch $ getdata und Object.keys (json) durch Object.keys (data) zu ersetzen und habe immer noch denselben Fehler :/ – thebigE

+0

Do: '$ .getJSON ('js/data.json', Funktion (json) {// Lösungscode hier});' –

Verwandte Themen