我正在开发一个用于推特的小部件的jQuery代码块,
$.getJSON("http://twitter.com/users/show.json?screen_name=" + twitterfeed + "&callback=?" ,
function(data) {
var fString = ($('<div id="userimage"><h1>'+ data.followers_count +'</h1></div>').digits()).text();
var tString = ($('<div id="userimage"><h1>'+ data.statuses_count +'</h1></div>').digits()).text();
$('#left-sidebar').prepend('<div id="userimage"><h1>'+ tString +'</h1></div>');
$('#left-sidebar').prepend('<div id="userimage"><h2>TWEETS</h2></div>');
$('#left-sidebar').prepend('<div id="userimage"><h1>'+ fString +'</h1></div>');
$('#left-sidebar').prepend('<div id="userimage"><h2>FOLLOWERS</h2></div>');
$('#left-sidebar').prepend('<div id="userimage"><img id="ProfileImageLarge" src=' + data.profile_image_url + '></div>');
});
我想抓住fString
和tString
并在外部函数中使用它们。
我还需要将data.followers_count
和data.statuses_count
的值与变量一起传递,以使值在任何函数中都是正确的而不是未定义的。
答案 0 :(得分:3)
您不需要使用window.fString将它们放在全局上下文中,您只需将var声明移到$ .getJSON之外。
在javascript中,闭包将允许访问函数外部定义的变量,但函数中定义的任何变量都无法在外部访问。
var fString, tString;
$.getJSON(... , function(){
fString = ...;
});
在同一范围内定义的任何函数s $ .getJSON也可以访问fString和tString
答案 1 :(得分:0)
window.fString = fString
然后在您的函数中,您可以在其他函数中引用window.fString
答案 2 :(得分:0)
在getJSON调用和其他函数的范围内的任何位置定义这些变量。理想情况下,您不会在全局窗口对象上定义它们,因为这是您可以获得的大量过度杀伤力。此外,您可以将它们作为数据附加到标记的某些任意部分(我使用<body>
)。你可以这样做:
$('body').data('fstring', ($('<div id="userimage"><h1>'+ data.followers_count +'</h1></div>').digits()).text());
$('body').data('tString', ($('<div id="userimage"><h1>'+ data.statuses_count +'</h1></div>').digits()).text());
然后可以这样访问这些值:
var fString = $('body').data('fstring');
var tString = $('body').data('tstring');
您还可以使用.data()来存储从getJSON请求返回的数据值,以便稍后可以访问这些值。
以下是.data()的文档:http://docs.jquery.com/Data
这是一个使用数据访问另一个函数的值集的演示:http://jsfiddle.net/9zcET/