Выдвижение переменной за пределы функции - PullRequest
0 голосов
/ 07 октября 2010

У меня есть блок кода 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 передавались вместе с переменной, чтобы в любой функции было правильным, а не неопределенным.

Ответы [ 3 ]

3 голосов
/ 07 октября 2010

Вам не нужно помещать их в глобальный контекст, используя window.fString, вы можете просто переместить объявления var за пределы $ .getJSON.

В javascript-закрытиях разрешен доступ к переменным, определенным за пределамифункция, но любые переменные, определенные в функции, не будут доступны снаружи.

var fString, tString;

$.getJSON(... , function(){
  fString = ...;
});

Любые функции, определенные в той же области s $ .getJSON, также будут иметь доступ к fString и tString

0 голосов
/ 07 октября 2010

Определите эти переменные в любом месте, которое находится в области видимости как для вашего вызова 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/

0 голосов
/ 07 октября 2010
window.fString = fString

Тогда в вашей функции вы можете ссылаться на window.fString в других функциях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...