gpt4 book ai didi

jquery - 无冲突模式下的 getScript

转载 作者:行者123 更新时间:2023-12-01 01:44:53 26 4
gpt4 key购买 nike

由于 WordPress 在非冲突模式下加载 jQuery,我必须将脚本包装在 jQuery(function($){...})

父脚本按预期执行。但是,我通过 getScript 有条件地加载第二个脚本:

$.getScript('js/2nd.js').done(function() {
editElem();
});

我还需要将所有内容包装在“2nd.js”中吗?如果我不这样做,什么也不会发生——甚至 Chrome 控制台中也不会抛出错误。如果我将其包装起来,它会显示“editElem 未定义” - 尽管我的“2nd.js”当然定义了它。

感谢您的见解。

最佳答案

最好还是将其包装起来 - 无冲突模式的目标是让您的代码保持工作,即使 $ 变量被另一个库占用。不过,正如您所发现的,一旦全局函数位于闭包内,它们就不再是全局的了!

全局变量并不被认为是 JavaScript 最好的成就,这个例子就是一个很好的例子;像 RequireJS 这样的模块加载器(可能是 extended for lazy loading ?)可以让以后的生活变得更轻松。

也就是说,如果您只有两个文件并且只想从 2nd.js 导出函数,则无需任何额外的库即可做到这一点:

(function ($) {
// ... define your functions
function editElem () {
}
function otherFunc () {
}
function privateFunc () {
}

// export any functions needed by scripts outside this file.
window.LazyUtils = {
editElem: editElem,
otherFunc: otherFunc
};
}( jQuery ));

之后,您应该能够从第一个 JS 文件、控制台或任何地方调用 LazyUtils.editElem()。由您决定如何命名该模块 - “LazyUtils”只是一个示例。

关于jquery - 无冲突模式下的 getScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29194551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com