Ich zeige/hidding Daten von Json auf Klick auf einen Marker, der total gut funktioniert.Dieses Element anzeigen, ohne Code jedes Mal zu wiederholen
Antwort
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>";
});
});
});
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
}
}
});
Dank Icepickle, dieser Trigger nur die Daten aus Australien:/ – thebigE
@ 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
erstaunlich, vielen Dank !! – thebigE
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",
}
]
}
In diesem Fall müssen Sie 'data' anstelle von' json' verwenden. –
hm Ich habe versucht, $ getJSON durch $ getdata und Object.keys (json) durch Object.keys (data) zu ersetzen und habe immer noch denselben Fehler :/ – thebigE
Do: '$ .getJSON ('js/data.json', Funktion (json) {// Lösungscode hier});' –
- 1. Müssen Code 30 mal wiederholen
- 2. -Code leer jedes Mal
- 3. Wie Code jedes Mal in Android
- 4. Nicht jedes Mal anzeigen, wenn startUpdatlocation
- 5. Winkel Tastendruck Ereignis jedes Mal anzeigen
- 6. Wie lösche jedes Element von np. Array, um Arrays ohne dieses geeignete Element zu erhalten?
- 7. Flip vertikal eine Hintergrund-Bild jedes Mal wiederholen-y
- 8. Permutationscode ohne zu wiederholen
- 9. Excel - Automatisieren VBA ohne müssen jedes Mal
- 10. Ein Element jedes Mal relativ zu seiner aktuellen Position übersetzen?
- 11. RxJava wiederholen N-mal
- 12. Einloggen durch authlogic, ohne jedes Mal Formular ausfüllen zu müssen
- 13. die gleiche `Anwendung ReactCSSTransitionGroup` jedes Mal auf eine Komponente ohne Wiederverwendung von Code
- 14. PHP SQL-Abfragen für jedes Element des Arrays effizient wiederholen
- 15. wiederholen Laravel Abfrageergebnis 4 mal
- 16. R: Wiederholen Sie den Vektor für jedes Element in Vektor
- 17. PHP password_hash jedes Mal
- 18. Idiom für "n mal wiederholen"?
- 19. Makro fast den gleichen Code zu wiederholen
- 20. ContextMenu zeigt ohne Rand rechts und unten jedes zweite Mal
- 21. rxJS Observable zu wiederholen Anruf jedes Mal, wenn Bedingung in Angular erfüllt 2
- 22. "sre_constants.error: nichts zu wiederholen" Fehler jedes Mal versucht, mit Pip installieren
- 23. Verhindern, Code in android-Layout zu wiederholen
- 24. Admob: Interstitial-Anzeigen, die jedes Mal angezeigt werden
- 25. viewDidLoad lädt jedes Mal
- 26. Was ist der beste Weg, um dieses Programm zu wiederholen?
- 27. wiederholen HTML-Element mit Javascript
- 28. tableView.reloadData() jedes Mal erscheint
- 29. Update Textfeld Wert jedes Mal
- 30. Wie man zwei jcomboboxes verbindet, ohne die Werte zu wiederholen
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
@ 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
@Icepickle Wenn Sie nicht Minze dann =) Vielen Dank! – thebigE