gpt4 book ai didi

javascript - 封装 jQuery 函数并将它们添加到全局命名空间

转载 作者:行者123 更新时间:2023-12-03 11:12:05 24 4
gpt4 key购买 nike

我在使用 jquery 时遇到很多问题。我正在管理一个使用原型(prototype)的旧应用程序。我的新页面不使用原型(prototype),但我将一些内容封装在 jquery.noConflict 中以防万一。然而,这导致我无法通过不同的 js 文件共享函数。

订单文件已加载:

jquery.js
jquery.commonFuncs.js
jquery.database.js

文件内容示例

commonFuncs.js

var someGlobalVar = "abc";

jQuery.noConflict()(function($){

function doStuff(x){
return x;
}

});

数据库.js

jQuery.noConflict()(function($){
var a = 123;
doStuff(a);
});

错误:doStuff未定义。

我可以理解为什么封装该函数会将其从全局命名空间中删除。我怎样才能将其添加回来?

我也不知道为什么如果我不加载prototype.js就必须使用noConflict如果我完全删除prototype.js并删除noConflict封装,我得到$ is undefined,并且我不知道从哪里开始。 jQuery 显然首先加载。没有任何线索。

最佳答案

正如 Madbreaks 所提议的那样,类似下面示例的内容应该可以工作。(查看网络浏览器控制台,看是否没有错误消息。)

var someGlobalVar = "abc";
var myApp = {};

jQuery.noConflict()(function($){

function doStuff(x){
return x;
}

myApp.doStuff = doStuff;
});

jQuery.noConflict()(function($){
var a = 123;
//doStuff(a);
console.log(myApp.doStuff(a));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 封装 jQuery 函数并将它们添加到全局命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27533739/

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