我想在脚本块之外访问jQuery变量var address
。我检查了这个question,但它对我也没有用。
$(document).ready(function(){
var url = 'https://sandbox.xyz.com/api/search/';
$("button").click(function(){
var address = $("#address").val();
$.getJSON(url+address, function(result){
$.each(result, function(index, element){
var address = element.address;
});
});
});
});
如何在我的jQuery块之外访问var address
。
答案 0 :(得分:0)
要使变量在更高的范围内可用,您需要在该范围内声明它,并在子范围中使用它。原理:
var address,
doStuff = function(param) {
// param holds address, when you call it from `$.each()`
console.log(param);
};
$(document).ready(function(){
var url = 'https://sandbox.xyz.com/api/search/';
$("button").click(function(){
address = $("#address").val();
$.getJSON(url+address, function(result){
$.each(result, function(index, element){
address = element.address;
doStuff(address);
});
});
});
});
address
将等同于$('#address').val()
事件中的document.ready
,直到来自$.getJSON()
的回复。在响应之后,它将继续填充result
集合中的最后一个值,因为您在每次$.each()
次迭代时都会重写其值。
如果要在address
返回后使用getJSON
的值,则需要创建一个函数并从getJSON中调用它。更新了我的例子。
答案 1 :(得分:-1)
请试试这个
var address;
$(document).ready(function(){
var url = 'https://sandbox.xyz.com/api/search/';
$("button").click(function(){
var address = $("#address").val();
$.getJSON(url+address, function(result){
$.each(result, function(index, element){
address = element.address;
});
});
});
});
在代码的最开头声明一个变量将使其范围对于所有下面的代码和函数都是全局的。