2016-11-30 5 views
-1

Ich bin neu bei Ajax und es ist das erste Mal, dass ich die load() Methode von jQuery verwende. Das Beispiel unten funktioniert nicht. Die Variable innerhalb doSomething() definiert sich nicht (wegen der asynchron nenne ich denke)Wie kann auf Variablen außerhalb der Lademethode zugegriffen werden?

var x = jQuery("#div1 a"); // x is used in different parts of the code, not only for the doSomething function 

jQuery('.test').load(homeUrl, function() { 
    doSomething(); 
}; 

function doSomething() { 
    x.css('background-color', 'yellow'); 
} 

Also, ich bin wie dies zu tun (die sich wiederholende ist) und es funktioniert:

function doSomething() { 
    var x = jQuery("#div1 a"); 
    x.css('background-color', 'yellow'); 
} 

Aber ich möchte zu wissen, ob es einen besseren Umgang mit der Variable gibt oder ob ich etwas falsch mache.

+2

'this.x' - ernsthaft? –

+0

Obwohl es aus der Frage nicht sehr klar ist, aber Sie [könnte den globalen Namensraum verschmutzen] (http://stackoverflow.com/questions/8862665/what-does-it-mean-global-namespace-would-be- verschmutzt # 13352212) –

+0

@ sid-m danke :) Da ich diese 'x'variable in anderen Funktionen verwende, macht es Sinn, dass ich sie im globalen Objekt definiere. – viery365

Antwort

1

Sie x an die doSomething Funktion übergeben könnte etwa so:

var x = jQuery ("# div1 a");

jQuery('.test').load(homeUrl, function() { 
    doSomething(x); 
}; 

function doSomething(x) { 
    x.css('background-color', 'yellow'); 
} 
+0

Danke! :) Das ist eine gute Idee, aber innerhalb dieser Funktion in der Realität habe ich viele Variablen, die bereits vorher definiert sind und in dieser Situation müsste ich viele Parameter verwenden (ich denke?). – viery365

Verwandte Themen