我将锅炉板与Codeigniter集成在一起。我正在使用codeigniter模板。当我在页面中调用任何jQuery内联函数时,它在控制台中显示“$ is not defined”。所以我复制了jquery代码并将其放在main.js文件中并且它有效。但是,当我在此页面中包含依赖于jquery插件的任何脚本文件时,它会向我显示相同的jquery undefined错误。请帮帮我!!
答案 0 :(得分:1)
@WillemLabu是正确的,你不能在定义之前使用jQuery。在jQuery包含在页面中之后,您必须放置使用jQuery的脚本。
Boilerplate将脚本放在页脚中,因为典型的应用程序将从页脚中的外部脚本运行其javascript。
解决方案是
您可以这样做:
<强> 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。