Я относительно новичок в javascript, поэтому, пожалуйста, будьте терпеливы, если то, что я прошу, абсолютно глупо!Javascript scope help
Я пытаюсь сделать простой модуль. Внутри модуля я хочу иметь объект конфигурации, который содержит настройки для модуля. Я также использую jquery. Селекторы jquery работают только в том случае, если функция непосредственно находится в основном объекте/модуле.
Я понимаю, что у javascript есть функциональная область, поэтому я удивлен тем, что не могу использовать селектора jquery в любом месте внутри модуля.
EDIT: Я хочу, чтобы иметь возможность напрямую устанавливать все мои конфиги внутри объекта configs с помощью селекторов jquery. Таким образом, я держу все беспорядочные вещи внутри одного места и могу получить доступ к configs.whatever всюду по остальной части модуля. В настоящий момент селектора jquery не работают внутри модуля configs.
var OB = function() {
var configs = {
'mode' : 'test',
'numOfSelects' : $('.mySelect').find('select').length, // This doesnt work
}
var getMode = function() {
return configs.mode;
}
function init() {
alert(configs.numOfSelects); // This alerts 0 until the following line
alert($('.mySelect').find('select').length); // This correctly alerts 2
};
var handlers = {
successHandler : function() {
alert("Success");
},
errorHandler : function() {
alert("error");
}
}
return {
init : init,
getMode : getMode
}
}();
$(document).ready(function(){
OB.init();
});
Не могли бы вы отредактировать это, чтобы включить именно ваш вопрос? Что вы ожидаете? Что вы уже пробовали? Какие результаты вы получаете? Как мы можем помочь? Какой ваш любимый цвет? Спасибо :) – Aardvark
Селектор jQuery является глобальным по объему и поэтому должен быть доступен из любого места. Вы уверены, что они недоступны? Каковы симптомы? –
Привет, Марсело. есть два поля выбора, вызываемые в dom с классом .mySelect. Когда я вызываю предупреждение (configs.numOfSelects); в примере выше - я получаю 0 Когда я вызываю предупреждение ($ ('. mySelect'). find ('select'). length); который находится в функции init, я получаю правильное количество 2 – David