2016-11-30 33 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