$(document).ready()
是 jQuery 中用来确保 DOM 完全加载并解析后执行代码的方法。它类似于原生 JavaScript 的 DOMContentLoaded
事件。
在 $(document).ready()
函数内部定义的变量和函数的作用域遵循 JavaScript 的标准作用域规则:
var
、let
或 const
声明的变量只在函数内部可见$(document).ready(function() {
// 局部变量 - 只在ready函数内可见
var localVar = "I'm local";
let localLet = "I'm also local";
const localConst = "Me too";
// 全局变量 - 不推荐的做法
globalVar = "I'm global (bad practice)";
// 局部函数
function localFunction() {
console.log("I'm a local function");
}
// 可以访问DOM元素
$("#myButton").click(function() {
console.log("Button clicked");
});
});
// 在ready函数外部
console.log(globalVar); // 可以访问
console.log(localVar); // 报错: localVar is not defined
localFunction(); // 报错: localFunction is not defined
$(function() { ... })
的简写问题1:在ready函数外部无法访问内部定义的变量或函数 原因:这是JavaScript的正常作用域行为 解决:将需要全局访问的变量或函数定义在ready函数外部
问题2:ready函数内部的代码不执行
原因:可能jQuery库未正确加载或DOM已加载完成
解决:检查jQuery是否加载,或改用$(window).on("load", function() { ... })
问题3:事件绑定在动态添加的元素上无效
原因:ready函数执行时元素还不存在
解决:使用事件委托,如 $(document).on("click", ".dynamic-element", function() { ... })
随着现代JavaScript发展,可以使用以下替代方案:
DOMContentLoaded
事件defer
属性的script标签