jQuery插件的$与jQuery的$冲突

时间:2017-06-17 10:39:40

标签: javascript jquery

我有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!');
            });
        }
    }

任何人都知道这是什么问题?如果一切似乎都没问题,我会尝试添加更多细节。

0 个答案:

没有答案