2016-11-30 68 views
-1

我是新來的ajax,這是我第一次使用jQuery的load()方法。 下面的示例不起作用。內doSomething()變量沒有定義(因爲異步調用我猜)如何訪問加載方法外的變量?

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'); 
} 

所以,我做這樣的(這是重複的),它的工作原理:

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

但我想知道是否有更好的方法來處理變量,或者即使我做錯了什麼。

+2

'this.x' - 認真嗎? –

+0

儘管問題並不十分清楚,但是您可能會[污染全局命名空間](http://stackoverflow.com/questions/8862665/what-does-it-mean-global-namespace-would-be-污染#13352212) –

+0

@ sid-m謝謝:)因爲我在其他函數中使用'x'variable,所以我在全局對象中定義它是有意義的。 – viery365

回答

1

你可以通過X到DoSomething的功能,像這樣:

變種X =的jQuery( 「#DIV1 A」);

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

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

謝謝!:)這是一個好主意,但在現實中,我有很多變量已經定義過,在這種情況下,我將不得不使用很多參數(我猜?)。 – viery365