2016-04-12 11 views
1

Ich bin verwirrt über die richtige Verwendung val Methode. Mein Buch sagt $(v).val(obj[name]); wird den Wert des Feldes aus dem Wert der Eigenschaft festlegen. Ich weiß jedoch nicht, was das bedeutet. Hier ist der Code, den ich nicht verstehen kann. Es wurde entwickelt, um die Felder eines Formulars wieder auf seine ursprünglichen Werte aufzufüllen. Ich würde mich über eine Schritt für Schritt Erklärung freuen, da ich jQuery noch sehr neu bin. DankVal-Methode zum Festlegen von Eigenschaften aus Objekt

fromObject:function(obj){ 
    $.each(this.find(':input'),function(i,v){ 
     var name = $(v).attr('name'); 
     if (obj[name]){ 
      $(v).val(obj[name]); //does this set the property as the value? 
     } else { 
      $(v).val(''); 
     } 
    }); 
} 
+0

siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ auswertet Operatoren/Property_Accessors # Bracket_notation –

+1

Grundsätzlich: ** GET VALUE: ** '$ (v) .val()' und ** SET WERT: ** '$ (v) .val ()' –

+1

Es kann so einfach sein als 'this.find (': input'). val (function() { return obj [this.name] || ''; }' –

Antwort

2

Ich denke, das Problem ist, dass Sie nicht mit der Klammernotation für den Zugriff auf eine Objekteigenschaften vertraut sind.

Angenommen, ich habe ein Formular Datenobjekt wie obj = {name:"bob"}

Wir greifen in der Regel den Namen wie obj.name; // we get bob

kann es wie obj['name'] auch getan werden. Diese wird verwendet, wenn der Name der Eigenschaft keine richtige Variablenname, zum Beispiel

obj = { "contacts[]": ["bob","john"] } 

obj['contacts[]'] // we get ["bob","john"] 
obj.contacts[] // syntax error 

oder wenn der Name der Eigenschaft Sie zugreifen möchten dynamisch ist, wie der Fall sein: Sie wollen auf die Eigenschaft zuzugreifen entsprechend dem Wert von Name Eigenschaft. Wir können die Notation . hier nicht verwenden, weil wir nicht wissen, was der Eigenschaftsname (Wert des Namensattributs) sein wird.

So ist die verwirrende Codezeile: $(v).val(obj[name]); ist eine Mischung aus beidem:

ersten wir den Wert der Name-Eigenschaft auf einer Variablen name zuweisen.
Wenn der Wert der Eigenschaft name ist „Kontakte []“, ist $(v).val(obj[name]);-$(v).val(obj["contacts[]"]); Äquivalent, die $(v).val(["bob","john"]);

+0

Danke TJ, warum würdest du sogar Klammern in einen Eigenschaftsnamen einfügen, auf den mit Punktnotation nicht zugegriffen werden kann? – st4rgut

+1

@ st4rgut Es ist üblich, wenn Sie mit Technologien wie JSP arbeiten, wo das Formular direkt an ein Java-Servlet übergeben wird. Es wird wie ein Array oder etwas behandelt, ich habe Leute dabei gesehen. Vielleicht hätte ich 'first-name' anstelle von' contacts [] 'verwenden sollen. Das gibt auch einen Fehler mit der. Leute werden ''! –

0

$ (v) .val (obj [name]);

Setzen Sie den Wert des spezifischen DOM-Elements "v" und Sie können den Wert auch als $ (v) .val();

Verwandte Themen