2013-07-05 4 views
0

Мне нужно связать все мои файлы javascript в один файл. Это требование. Теперь я создал пару задач grunt для конкатенирования файлов javascript. Сценарий:Конкатенированный Javascript, выполнение jQuery

jquery.js 
jquery.plugin1.js 
custom.js 
>> combined.js 

На моей установке разработки я использую yepnopejs, чтобы загрузить все скрипты и их преобразования приложений на доработку. Это прекрасно работает. Весь мой javascript-код работает отлично, за исключением конкатенированного файла. Похоже, что jQuery выполняется слишком рано, поэтому некоторые из моих селекторов не соответствуют актуальной разметке.

development 
$('input, select').not(':hidden').each(function(){...}); 
>> length: 21 items 

работы

production (concated file) 
$('input, select').not(':hidden').each(function(){...}); 
>> length: 0 items 

не работает.

Initialization

development 
yepnope([ 
    { 
     load: 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' 
    }, 
    { 
    load: 'js/jquery.plugin1.js', 
    complete: function() { 
     onReady(); 
    } 
}]); 

production 
$(window).load(function(){ 
    onReady(); 
}); 

Я попытался также $(document).ready(function) и так далее. Я почти уверен, что моя часть инициализации сломана или полностью ошибается.

+0

Вы можете переместить свой Javascript в другое место в нижней части страницы? или это сломает все ужасно? – Mgetz

+0

Согласованный? Вы имеете в виду сцепление? – j08691

+0

Пометка здесь не может быть изменена @ mgetz – onigunn

ответ

1

В такой ситуации есть несколько шагов, которые должны помочь отлаживать, что происходит:

  1. Попробуйте переместить ссылку JavaScript в нижней части страницы, означает ли это исправить?
    1. Использует ли атрибуты async or defer ссылку на скрипт решить проблему?
  2. Проверьте ваши скрипты работают под "use strict", внутри closure, и передать JSLint
  3. ли $(document).ready() работу?
  4. Если шаг 1 работал, а шаги 2 и 3 не выполнялись, попросите разрешения изменить разметку, так как исправления, предоставленные на шаге 2, несомненно сделают вещи более надежными, они не решают проблему.
Смежные вопросы