Codeigniter和样板集成 - jQuery未定义的问题

时间:2013-02-17 08:04:40

标签: jquery codeigniter html5boilerplate

我将锅炉板与Codeigniter集成在一起。我正在使用codeigniter模板。当我在页面中调用任何jQuery内联函数时,它在控制台中显示“$ is not defined”。所以我复制了jquery代码并将其放在main.js文件中并且它有效。但是,当我在此页面中包含依赖于jquery插件的任何脚本文件时,它会向我显示相同的jquery undefined错误。请帮帮我!!

2 个答案:

答案 0 :(得分:1)

@WillemLabu是正确的,你不能在定义之前使用jQuery。在jQuery包含在页面中之后,您必须放置使用jQuery的脚本。

Boilerplate将脚本放在页脚中,因为典型的应用程序将从页脚中的外部脚本运行其javascript。

解决方案是

  1. 把jQuery放在头上;或
  2. 将jQuery放在脚中,并将内联脚本附加到jQuery包含后运行的对象。
  3. 您可以这样做:

    <强> head.php

    <html>
    <head>
     ...
    <!-- define a global object to attach your scripts to -->
    <script type="text/javascript">APP_READY = { callbacks: []};</script>
    </head>
    

    <强> yourView.php

    <!-- add your inline scripts inside the APP_READY namespace -->
    <script type="text/javascript">
    // MODULE
    APP_READY.callbacks.push(function() {
    
      alert('simple example of APP_READY Callback');
    
    });
    </script>
    

    <强> anotherView.php

    <script type="text/javascript">
    // MODULE
    APP_READY.callbacks.push(function() {
    
      var exampleModule = [];
    
      exampleModule.init = function() {
        alert('modular example of APP_READY Callback');
      };
    
      exampleModule.init();
    
    });
    </script>
    

    <强> foot.php

    <!-- include jQuery -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    
    <!-- execute your Object -->
    <script type="text/javascript">
    (function($) {
      'use strict';
    
      // Initialise the callbacks
      //
      for (var i =0; i<APP_READY.callbacks.length; i++ ) {
        var callback = APP_READY.callbacks[i];
    
        if(callback && typeof callback == 'function') {
            callback();
        }
      }
    
    })(jQuery);
    </script>
    

答案 1 :(得分:0)

JavaScript按顺序运行,这意味着在尝试使用它之前需要包含jQuery。

确保在尝试使用$()jQuery()的任何其他代码之前(上方)包含jQuery。