我有一個範圍問題,我無法弄清楚。
請參閱此代碼:
setTimeout(function() {
var jq = $.ajax({
});
jq.done(function(data){
})
},1000);
// How to access jq object here?
如何訪問JQ之外的setTimeout?這裏有一個活樣本http://jsfiddle.net/g54Cx/
我有一個範圍問題,我無法弄清楚。
請參閱此代碼:
setTimeout(function() {
var jq = $.ajax({
});
jq.done(function(data){
})
},1000);
// How to access jq object here?
如何訪問JQ之外的setTimeout?這裏有一個活樣本http://jsfiddle.net/g54Cx/
移動var jq;
出超時定義的,就像這樣:
var jq;
setTimeout(function() {
jq = $.ajax({
});
jq.done(function(data){
})
}, 1000);
console.log(jq);
在這種情況下,在settimeOut之後調用的jq不包含像jq.always()那樣的方法,不能在setTimeout之後調用 – Thomasmkov
是的,當然。它將在1000毫秒後纔可用。 –
除了其他建議...
你可以將它傳遞給另一個函數: http://jsfiddle.net/7aZdm/
myFunction(jq) {
//access in here
}
setTimeout(function() {
var jq = $.ajax({
url: "/echo/json/",
type: "POST",
data: {json: '{"message": "Hello"}'},
dataType: "json"
});
myFunction(jq);
jq.done(function(data){
$("#msg").text("Response is = " + data.message);
})
},1000);
或只是將它分配給窗口對象,但這通常是不好的做法
window.jq = jq
範圍變量超時。你想用它做什麼? – Mathletics
我試過了,它不起作用。還有什麼關於「全局變量是壞」的建議 – Thomasmkov
如果問題是_how我可以訪問jq_那麼它絕對工作。但是,'jq'的VALUE可能不是您認爲的值。告訴我們你想要做什麼;你在這裏遇到了一個XY問題。 – Mathletics