2010-03-21 5 views
6

Ich habe den folgenden Code, den ich Werte bei einer Auswahl ändern möchte, und auch die Auswahl zunächst laden (da FF 'speichert' den letzten Wert des Abfalls unter bestimmten Umständen).

Der Auswahl Teil der Funktion korrekt arbeitet, aber aus irgendeinem Grund, wenn load2 direkt der Wert von $('#select1').value ist undefined, obwohl, wenn ich überprüfen Sie die DOM in Firebug direkt nach Belastung select1.value einen Wert aufrufen. Wie kann ich die load2 Funktion ausführen, nachdem select1.value bereit ist? Welches Ereignis wird mir mitteilen, wenn alle Elemente von $('#select1') initialisiert wurden?

$(document).ready(function() { 
    //Setup change hook 
    $('#select1').change(function(event) { 
     //Remove the old options right away 
     $('#select2').find('option').remove(); 
     //Load the new options 
     load2(this.value); 
    }); 

    //Do load for current value 
    load2($('#select1').value); 
}); 

Antwort

6

AFAIK das jQuery-Objekt hat keine value Feld. Daher würde ich die folgende Aussage erwartet einen Wert von undefined auf die load2() Funktion zu übergeben:

load2($('#select1').value); 

Das jQuery-Objekt hat jedoch eine val() Funktion. Versuchen Sie es mit, dass statt:

load2($('#select1').val()); 

Alternativ sollten Sie in der Lage sein, das DOM Feld zuzugreifen value wie folgt aus:

load2($('#select1').get(0).value); 
+0

+1 Das funktioniert in meinem Firefox. – balpha

+0

Perfekt, danke. –

1

Wenn ich richtig verstehe, können Sie überprüfen, ob ein Wert vorhanden ist, dann ist es aus:

if ($('#select1').value) { 
    load2($('#select1').value); 
} 
+0

Das Problem mit diesem ist, dass meine zweite Auswahlliste wird nicht aufgefüllt werden, was ist genau das, was ich versucht habe (diese Liste zu füllen). –

Verwandte Themen