在jQuery点击事件中,调用存储在单独dojo-js文件中的函数

In a jQuery click event, call a function stored in separate dojo js file

本文关键字:单独 dojo-js 文件 函数 存储 jQuery 事件 调用      更新时间:2023-09-26

当试图分解JS代码时,我已经将jQuery引导程序点击事件拉到了它们自己的文件中。

所有内容都加载正确,但当试图从jQuery文件引用我的dojo文件中的函数时,最终结果是"zoomToStreams not defined()";

是否有一种适当的方法可以将所有内容分解为易于管理的片段,以实现代码的可重用性,并使不同的库(jQuery、dojo)共存?两者都是通过我文档底部的标签加载的。

// dojo.js
require(["dojo modules",...],function(dojo,...) {
    ...
    function zoomToStream(targetStream) {
       ...
    }
});
// jQuery.js
$(document).ready(function() {
    $("#streamSelection li").click(function(e) {
        switch (e.target.text) {
            case "All Streams":
                zoomToStream("all");
                break;
            case "First Stream";
                zoomToStream("1");
                break;
            ...
        }
    }
 });

将您的第一个代码片段转换为一个模块,然后您可以为jquery代码所需。

dojo.js(这不是你给js文件命名的名字,是吗?)

define("zoomToStream",["dojo modules",...], function(dojo,...) {
    ...
    function zoomToStream(targetStream) {
       ...
    }
    return zoomToStream;
});

jQuery.js(这不是你给js文件命名的名字,是吗?)

require(["zoomToStream"],function(zoomToStream) {
    $(document).ready(function() {
        $("#streamSelection li").click(function(e) {
            switch (e.target.text) {
                case "All Streams":
                    zoomToStream("all");
                    break;
                case "First Stream";
                    zoomToStream("1");
                    break;
                ...
            }
        }
    });
});

修改以适应您的文件结构等,将这些文件名用于js文件似乎有点奇怪。