Как правильно избавляться от дублирования кода? 
		
		
		
		День добрый. 
	Есть 2 js файла, где инициализируется один тот же jquery плагин, с одинаковыми параметрами. Выношу параметры в отдельный файл, пример: 
var autocompleteOptions = {
        minChars: 1,
        delay: 600,
        dataType: 'json', 
        autoFill: true,
        extraParams: {
                country_id: $('#country_id').val()                       
        },
        width: 362,
        parse: function(data) {
        },
        formatItem: function(item) {
                                                 
 
        }
              
};
Подключаю этот файл, перед первыми двумя. И вот проблема, что получаю в качестве значения country_id: undefined. Подскажите, пожалуйста, как правильно выносить конфиги в отдельные файлы. И вообще как в js бороться с таким дублированием.  | 
	
		
 Предполагаю что вам следует дождаться загрузки DOM ? 
	
$(function() {
   // Тут инициализация вашего плагина
});
 | 
	
		
 walik, все верно. Но получается что область видимости переменных станет только как раз инициализация: 
	
$(function() {
   
});
А мне же нужно, чтобы эти параметры были доступны из других файлов))  | 
	
		
 Так объявляйте переменные как глобальные и все. 
	 | 
	
		
 
var autocompleteOptions = null;
$(document).ready(function(){
    autocompleteOptions = {
        minChars: 1,
        delay: 600,
        dataType: 'json', 
        autoFill: true,
        extraParams: {
                country_id: $('#country_id').val()                       
        },
        width: 362,
        parse: function(data) {
        },
        formatItem: function(item) {
                                                 
 
        }
              
    };
});
 | 
	
		
 Возможно неправильно выражаюсь. Попробую объяснить по другому. В шаблоне подключено 2 файла: 
	<script type="text/javascript" src="/js/autocomplete.js"></script> <script type="text/javascript" src="/js/settings.js"></script> Cодержимое autocomplete.js: 
var autocompleteOptions = {
        minChars: 1,
        delay: 600,
        dataType: 'json', 
        autoFill: true,
        extraParams: {
                country_id: $('#country_id').val()                       
        },
        width: 362,
        parse: function(data) {
        },
        formatItem: function(item) {
                                                 
 
        }           
};
Cодержимое settings.js: 
$(function(){
        console.log(autocompleteOptions);
})
И в консоли результат: country_id: undefined; Если же перенести объявление autocompleteOptions в файл settings.js, то все нормально. Как быть?  | 
	
		
 Так вы же не ждете загрузки DOM. При вызове $('#country_id').val() элемента еще нет на странице. 
	
$(function() {
    autocompleteOptions = {
        minChars: 1,
        delay: 600,
        dataType: 'json',
        autoFill: true,
        extraParams: {
                country_id: $('#country_id').val()                      
        },
        width: 362,
        parse: function(data) {
 
        },
        formatItem: function(item) {
                                                  
  
        }          
    };
});
 | 
	
		
 walik, тогда получаю ошибку. Так как область действия autocompleteOptions, ограничена функцией, определенной в autocomplete.js  
	autocompleteOptions is not defined [Прерывать на этой ошибке] console.log(autocompleteOptions);  | 
	
		
 Black_Prince, спасибо. Ваш вариант, сработал. 
	 | 
	
		
 К переменной обращаетесь тоже после загрузки DOM когда уже переменная объявлена ? 
	+ обратите внимание что в моем примере я объявил переменную без слова var что бы она была глобальная.  | 
| Часовой пояс GMT +3, время: 11:07. |