我有3个js文件,称之为 myJavascript.js , myPlugin.js 和 jQuery libary。
文件本身相对较长,所以我尝试在不复制整个脚本的情况下传达问题。
在使用它们的html文件中,我按以下顺序包含了js文件:
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
<script src="resources/js/myPlugin.js"></script>
<script src="resources/js/myJavascript.js"></script>
我用以下结构编写了插件:
myPlugin.js:
(function ($) {
local variables...
//several functions with the form
$.fn.funcName = function(parameters) { body };
//several function used internally
function funcName(parameters) { body }
}(jQuery));
在 myJavascript.js 中,我只使用插件中定义的方法(就像使用jQuery方法一样),并且它正在工作。但是,当我尝试在调用插件函数之前调用jQuery方法(真实的,不是来自插件)之前,我得到了错误:
Uncaught TypeError: $(...).mazeBoard is not a function
举一个具体的例子:
/* when this block exists, the call to mazeBoard throws the error */
/* when I remove this block, the call to mazeBoard works perfectly */
{
$(function () {
jQuery("#navigationMenu").load("nav.html");
loadSettings();
});
}
/********************/
{
...local variables...
function getSingleGame() {
...body...
$.getJSON(url, function (data) {
//this is some function in myJavascript.js
var mazeData = makeMazeData(data.Maze, data.Rows, data.Cols);
//this is call to function from my plugin
mymaze = $('#mazeCanvas').mazeBoard(mazeData);
alert('success');
}).fail(function () {
alert('error!');
});
}
}
任何人都知道这是什么问题?如果一切似乎都没问题,我会尝试添加更多细节。