Ich habe den folgenden CodeAccess Variablen Javascript/jquery
$('#first').click(function() {
myVar = $(this).next().val();
});
$('#second').blur(function() {
console.log(myVar);
});
Wie meineVar innerhalb #Zweites zugreifen?
Ich habe den folgenden CodeAccess Variablen Javascript/jquery
$('#first').click(function() {
myVar = $(this).next().val();
});
$('#second').blur(function() {
console.log(myVar);
});
Wie meineVar innerhalb #Zweites zugreifen?
Es ist auf den breiteren Kontext des Codes abhängt. Sie können dies tun:
(function() {
var myVar;
$('#first').click(function() {
myVar = $(this).next().val();
});
$('#second').blur(function() {
console.log(myVar);
});
})();
Das schafft eine anonyme Funktion und ruft es sofort. Der Zweck der anonymen Funktion besteht darin, einen Container für myVar
ohne bereitzustellen, der eine globale Variable macht. Globale Variablen werden im Allgemeinen am besten vermieden (nicht zuletzt, weil sie zu Eigenschaften des Objekts window
werden, auf dem bereits allerlei Arten von Junk stecken). Insbesondere werden die Funktionen, die Sie Ihren Ereignissen click
und blur
zuweisen, Schließungen über die Daten innerhalb des Aufrufs an die anonyme Funktion. Sie haben Zugriff auf myVar
, aber nichts anderes tut. More here.
Wenn sich Ihr Code bereits in einem enthaltenden Bereich befindet oder Sie nicht daran interessiert sind, dem globalen Namespace hinzuzufügen, benötigen Sie die anonyme Funktion nicht.
definieren meineVar im Außenbereich:
var myVar;
$('#first').click(function() {
myVar = $(this).next().val();
});
$('#second').blur(function() {
console.log(myVar);
});
T.J. Crowders Antwort macht was du willst. Dies ist nur eine Alternative (die jQuery data storage Methoden):
$('#first').click(function() {
// Assign this element to have data with the key 'myVar'
$(this).data('myVar', $(this).next().val());
});
$('#second').blur(function() {
// Read the data from the other element
console.log($('#first').data('myVar'));
});
Die Antworten hier sind gut. Aber ich denke, Sie sind an dem Punkt, an dem Sie davon profitieren würden, Crockford's JS slideshow zu lesen. Es ist sehr gut und erklärt einige Fragen zu Ihrer Frage.
+1 für den Verschluss –
+1. Korrekte Antwort. Ich habe keine Ahnung, warum alle '(function() {})()' statt '(function() {}())' machen. Letzteres scheint mir viel natürlicher zu sein. Die äußeren Klammern werden auch nicht benötigt, aber sie signalisieren etwas, das weitergeht. – jwueller
@elusive: warum nicht eine Frage stellen, warum? –