2015-02-14 3 views
1

Я выделил и выделил кусок кода, который я написал в плагине jquery, который я создаю. В этом коде переменная «селектор» в цикле имеет значение «rotator». Я хотел бы использовать значение этой переменной для установки значения переменной rotator, объявленной вне цикла. Я пытался использовать окно, но, очевидно, это не работает. Как бы вы это сделали?JQuery, используя значение переменной внутри функции, чтобы установить значение другой переменной из этой функции

Спасибо за любую помощь в этом, я пытался понять это на некоторое время.

;(function ($, window, document, undefined) { 
    $.fn.plugin_name = function(options) { 

     var rotator; 

     for (var selector in selectors) { 
      window[selector] = selector_obj; 
     } 
    }; 
})(jQuery); 
+0

Вопрос ваш спрошу и образец кода данное, кажется, не имеет смысла. как определяется «селекторы»? Какой идентификатор 'selector_obj'? и что вы делаете с переменной 'rotator'. Также почему нужно глобальное 'window [селектор]'? Поскольку это плагин jQuery, вы можете сохранить состояние в закрытии, создаваемом вами IIFE. – Sukima

+0

жаль, что неясно. У меня есть несколько переменных помимо ротатора, я просто пытался изолировать пример. цикл проходит через литерал объекта. Я просто пытался изолировать конкретный пример, чтобы убедиться, что это можно сделать. Если селектор имеет значение вращать, как я могу использовать это значение переменной, чтобы дать var rotator значение в цикле, в данном случае «selector_obj». – loriensleafs

+0

Окно не работает, я просто пытался показать пример того, что я пробовал, и что он не работает. Я чувствовал, что есть что-то подобное, что я мог бы делать по тому же пути. – loriensleafs

ответ

1

Там нет никакого способа, чтобы получить доступ к внутренней рамке вашей функции (если не связываться с объектом). Как я хотел бы предложить, чтобы положить rorator переменные в объект, например, здесь называется collection, которые вы можете легко получить доступ:

;(function ($, window, document, undefined) { 
    $.fn.plugin_name = function(options) { 
     var collection = {}; 
     collection.rotator = ...; 

     for (var selector in selectors) { 
      collection[selector] = selector_obj; 
     } 
    }; 
})(jQuery); 
+0

В порядке, я подумал об этом, но на самом деле просто интересно, есть ли способ сделать это с переменными во внутренней области. Это то, о чем я спрашивал, думаю, я не был предельно ясен. Спасибо за разъяснения! – loriensleafs

+0

Это был хороший вопрос. Сфера охвата неясна для многих людей, особенно в отношении «этого». Не стесняйтесь читать об этом, если хотите узнать больше: http://javascriptplayground.com/blog/2012/04/javascript-variable-scope-this/ – floribon

+0

спасибо человеку, я путался с внутренней областью и глобальным. Спасибо за ссылку и помощь! – loriensleafs

0

Вы можете определить переменный ротатор внутри внешней функции:

(function ($, window, document, undefined) { 
    var rotator; 

    $.fn.plugin_name = function(options) { 
     for (var selector in selectors) { 
      // use rotator here 
      window[selector] = selector_obj; 
     } 
    }; 
})(jQuery); 
+0

, так что есть способ определить его, не перемещая его в глобальную функцию? – loriensleafs

+0

Ваша переменная (ы) должна быть определена внутри вашей функции. Если вы сохраните их во внешней функции, у них будет «глобальная» область. – Sigismundus

+0

, но не будет хранить var rotator внутри $ .fn.plugin_name = function (options) {function be better? Вращатель var является частью плагина, почему он должен быть выведен из него? – loriensleafs

Смежные вопросы