0

我必须将我所有的 javascript 文件捆绑到一个文件中。这是要求。现在我已经设置了几个 grunt 任务来连接我的 javascript 文件。设想:

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

不起作用。

初始化

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)等等。我很确定我的初始化部分已损坏或完全错误。

4

1 回答 1

1

在这种情况下,有几个步骤可以帮助调试正在发生的事情:

  1. 尝试将 JavaScript 引用移动到页面底部,这样可以解决问题吗?
    1. async在脚本参考上使用ordefer属性是否可以解决问题?
  2. 验证您的脚本在闭包"use strict"内工作,并通过JSLint
  3. $(document).ready()行得通吗?
  4. 如果第 1 步有效而第 2 步和第 3 步无效,请寻求修改标记的许可,因为第 2 步提供的修复无疑会使事情变得更可靠,但它们不会解决问题。
于 2013-07-05T14:03:41.103 回答