2016-06-26 16 views
-2

Ich verwende eine Kombination von zwei Dropdown-Listen (auswählen). Abhängig von der Wahl, die ein Benutzer in der ersten Liste vornimmt, wird die zweite durch einen Anruf mit einem Anruf besetzt. Mit der gleichen Kombination von Listen in einem anderen Teil der Webseite speichere ich die Auswahl, die der Benutzer als Index gemacht hat (die erste Wahl wird als 0 usw. gespeichert). Ich beende dann neu und wähle die Wahl des Benutzers über nth-Kind (whatIhaveSaved).Wählen Sie die Option in der dynamisch generierten Auswahlliste (Dropdownliste)

Was ich jedoch nicht tun kann, ist diese Auswahl in der zweiten Liste zu machen (d. H., Es lädt die Listendaten, wählt aber nichts aus, egal welchen Wert es liest). Was kann dagegen getan werden?

Ich bin nicht in der Lage viel mehr Code hinzufügen, so im Wesentlichen, was passiert und was ich tun möchte, ist:

$("#first-choice").change(function() { 
     $("#second-choice").load("textdata/" + $(this).val() + ".txt"); 
    }); 

Alle anderen Einstellungen, die ich speichern möchten, lassen sich gut durch die Verwendung:

$('#first-choice option:nth('+ parseInt(savedPresets[0]) +')').attr("selected","selected"); 

Sobald diese Einstellung zum Beispiel angewendet wird, wird auch die zweite Liste aufgefüllt. Der folgende ähnliche Aufruf für die zweite Liste scheint jedoch ignoriert zu werden.

Leider bin ich nicht viel mit jQuery erfahrenen

+2

mehr Ressourcen wäre gut empfangen wird, können Sie uns mehr Code senden? – shadownrun

+0

Ohne irgendeinen Kontext meine erste Vermutung ist, dass Sie den Klick mit jquery '.on()' nicht an die dynamisch hinzugefügten Auswahloptionen binden –

+0

Niemand kann helfen, ohne den Code zu sehen, der nicht funktioniert .... siehe [mcve ] – charlietfl

Antwort

0

Ein Problem ist, dass load() ein Ajax-Methode ist und Ajax ist asynchron.

dies bedeutet, wenn Sie mit dem neuen HTML interagieren möchten Sie haben es in den Erfolg Rückruf zu tun, die ausgelöst wird, nachdem die HTML-

$("#first-choice").change(function() { 
     $("#second-choice").load("textdata/" + $(this).val() + ".txt", function(){  
     // new html exists can work with it here 

     }); 

    // any code here will run before new html arrives 
}) 
+0

Vielen Dank !!! Das war's! Ich Idiot! – Orestis

+0

keine Sorgen ... nicht alle begreifen asynchrone Programmierung auf den ersten – charlietfl

Verwandte Themen