javascript - 即使加载了 jquery ui 库,$.ui 也未定义
问题描述
我有一个带有 JavaScript 的页面,其中有一个自调用函数,该函数在页面加载时执行。此页面还包括 jquery 和 jquery ui 库(包括第一个 jquery,然后包括 jquery ui)。
以下 JavaScript 包含在页面末尾关闭 body 标记之前。
在下面的代码中,即使变量 x 和 y 正确地表明 jquery ui 存在,但在global.method1
函数中变量 z 始终未定义,当它应该在加载 jquery ui 后定义时。
问题
为什么 $.ui 在自调用函数之外以及在同一个自调用函数中的文档就绪事件中定义,而不是在global.method1方法中定义?
我在以下链接中有一个演示,其中我没有看到这种行为,即在 method1 $.ui 中定义:示例可运行代码。所以,它真的很混乱。
var x = $.ui;//defined
(function (global) {
var dialogOptions;
$(
function () {
var y = $.ui;//defined
//some more code here
}
);
global.method1 = function () {
var z = $.ui; //not defined
//some more code here
}
//some more code here
})(window);
解决方案
我试图为您创建一个最小的示例;
- 创建了一个片段,其中包含指向 jQuery 的链接。
- 向控制台添加了一些日志
- 添加了对全局方法的调用
一切似乎都已定义。您的问题必须在您的示例中未链接的代码中。
var x = $.ui; //defined
console.log(`first: ${x}`);
(function(global) {
var dialogOptions;
$(
function() {
var y = $.ui; //defined
console.log(`second: ${y}`);
//some more code here
}
);
global.method1 = function() {
var z = $.ui; //not defined
console.log(`third: ${z}`);
//some more code here
}
//some more code here
global.method1(); //added this call
})(window);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
推荐阅读
- python - 如何在不使用循环的情况下将一维列表转换为二维列表?
- javascript - Firestore Javascript 从 .get() 推送的数据在 .get() 函数之外无法访问
- mysql - Mysql GROUP BY 多个子句
- java - 如何在 JavaFX 上绘制网格并用点绘制网格角?
- javascript - 尽管一切都正确,mongoDB 方法仍返回 undefined
- ionic-framework - 是否有可以添加到 Ionic 项目的字符串或语言文件?
- java - 用 Java 编写我自己的 Wikipedia 查找和替换
- xrp - 为什么分类帐会使用其父分类帐的关闭时间进行散列?
- visual-studio-code - 如何显示 vscode 元数据页脚
- python - 为什么 numpy 导入的行为不同?