2016-07-14 13 views
-1

den Wert für alle Eingabefelder einer Klasse foo Einstellung ist einfach:Wie legt man den Wert für alle Elemente fest, die eine Variable in jQuery verwenden?

$('#long .path .to .foo').val('...'); 

Aber jetzt muss ich die foo Felder an mehreren Stellen manipulieren, so dass ich sie gespeichert als Objekt wie wollen diese es wie verwenden:

foo = $('#long .path .to .foo'); 
foo.val('...'); 

Wenn ich den Wert innerhalb der Funktion zuweisen, wo ich es verwende, funktioniert es. Aber wenn das nicht funktioniert:

$(document).ready(function() { 
    foo = $('#long .path .to .foo'); 
    bar(); 
} 
function bar() { 
    foo.val('...'); 
} 

Und es geht nicht um den Umfang, da dies funktioniert:

function bar() { 
    foo.first().val('...'); // or last() 
} 

Wie die value aller Elemente eines class setzen ein jQuery-Objekt gespeichert zu einer Variablen (außerhalb des aktuellen Bereichs)?

+0

Wo deklarieren Sie * 'foo'? – Madbreaks

+0

Probieren Sie '$ (foo) .val ('...')', funktioniert das? – sbonkosky

+0

@Madbreaks Wenn Sie deklarieren, dann wenn die Deklaration fehlt, ist die Variable global, wenn sie definiert ist wie 'foo = $ ('# long .path .to .foo');' – bugwheels94

Antwort

0

Das Problem ist, dass die Felder von JavaScript generiert werden - nach das Dokument wurde geladen. Nur das Eingabeelement ist statisch, darum funktioniert es.

Die Lösung ist, die foo Erklärung auf eine Callback zu bewegen, und die Verwendung ist in der Funktion (en) statt den Variablen, so dass die entsprechende Eingabepositionsliste abgerufen wird, jedes Mal, wenn sie manipuliert werden soll:

$(document).ready(function() { 
    foo = function() { 
     return $('#long .path .to .foo'); 
    }; 
    bar(); 
} 
function bar() { 
    foo().val('...'); 
}