javascript - 调用 javascript 处理程序的正确方法

标签 javascript jquery

我有一个很大的JS文件,想将其分割,比如我有这个:

page.html

<!-- some tags and jquery include... -->
<script src="example.js"></script>
<!-- externalHandlers only needs for second example, in original working example It's empty -->
<script src="externalHandlers.js"></script>
<script>
    $(document).ready(function(){
        var something = new Something('someValue');
    );
</script>
<!-- some tags... -->

example.js

var Something = (function (document) {
    "use strict";
    var Something = function(x){
        //initialize some stuff
    };
    Something.prototype.func1 = function(){
        //do things
    }

    Something.prototype.func2 = function(){
        //do things
    }

    //more funcs
    $(document).on('click', 'a.some-class', function (e) {
        //do things when click
    });

    $(document).on('click', 'a.some-class-2', function (e) {
        //do things when click
    });

    return Something;

})(document);

上面的代码工作正常,但我想在另一个 js 文件中外部化点击处理程序。我试过这个:

example.js(新)

var Something = (function (document) {
    "use strict";
    var Something = function(x){
        //initialize some stuff
    };
    Something.prototype.func1 = function(){
        //do things
    }

    Something.prototype.func2 = function(){
        //do things
    }

    //more funcs
    $(document).on('click', 'a.some-class', handlerFunction);

    $(document).on('click', 'a.some-class-2', function (e) {
        //do things when click
    });

    return Something;    

})(document);

externalHandlers.js

function handlerFunction(){
    //do some stuff
}

但是浏览器控制台显示错误

ReferenceError: handlerFunction is not defined

TypeError: Something is not a constructor

我怎样才能做我想做的事情?这可能吗?

最佳答案

确保 externalHandlers 首先运行,以便在 example.js 运行时定义 handlerFunction,以便 example.js 可以正确引用 handlerFunction 而不会出现错误,并且可以正确定义 Something:

<script src="externalHandlers.js"></script>
<script src="example.js"></script>

关于javascript - 调用 javascript 处理程序的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56072208/

相关文章:

javascript - 在同一页面上实现多个 D3 布局

javascript - 如何使用 JSON 将 java arraylist 提供给 javascript 函数

javascript - 检测对象是否已加载 [Javascript]

javascript - 使用 javascript,Cushy CMS 更改 textContent

jquery - 如何在从数据库中选取值的 jsp 页面中使用 css 和脚本创建菜单、子菜单、子子菜单?

php - 通过 AJAX 将 HTML 发送到服务器端 PHP

javascript - DOM 操作是否异步(当使用浏览器提供的 API 时,如 getElementById 或appendChild)?

javascript - 为什么 Canvas 之外的元素没有动画(fabricjs)?

javascript - 如何在 jQuery AJAX 成功时强制下载文件?

javascript - 如何使用 jquery 显示具有相同 id 的多个 div 之一?