连接Javascript,jQuery执行

时间:2013-07-05 12:56:30

标签: javascript jquery

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

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

在我的开发设置中,我使用yepnopejs加载所有脚本并在完成时执行它们。这很好用。除了作为连接文件,我的所有JavaScript代码都可以正常工作。似乎jQuery执行得太早,所以我的一些选择器与actucal标记不匹配。

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

1 个答案:

答案 0 :(得分:1)

在这种情况下,有几个步骤可以帮助调试正在进行的操作:

  1. 尝试将JavaScript引用移动到页面底部,这样可以解决吗?
    1. 使用脚本引用上的async or defer属性是否可以解决问题?
  2. 验证您的脚本是否在"use strict"closure内运行,并通过JSLint
  3. $(document).ready()是否有效?
  4. 如果第1步有效且第2步和第3步没有,请寻求修改标记的权限,因为第2步提供的修补程序无疑会使事情更可靠,但无法解决问题。