在JavaScript中,特别是在使用jQuery时,$(document).ready()
和 $(document).on()
是两个常用的方法,分别用于在文档加载完成后执行代码和为动态元素绑定事件处理器。
$(document).ready(function() {...})
: 当DOM(文档对象模型)完全加载并准备好后,这个函数会被执行。这通常用于初始化页面或绑定不需要等待图片和其他资源加载完成的事件。$(document).on('change', 'select', function() {...})
: 这是一个事件委托,它监听所有select
元素的change
事件。即使这些select
元素是在文档加载后动态添加的,这个事件处理器也能正常工作。如果你想在$(document).ready()
中设置的变量值能够被$(document).on('change', 'select', function() {...})
访问,你需要确保这个变量是在一个更广泛的作用域内定义的,或者是在全局作用域内定义的。
// 在全局作用域或更广泛的作用域内定义变量
var myVariable;
$(document).ready(function() {
// 初始化变量
myVariable = 'Hello, World!';
// 绑定change事件处理器
$(document).on('change', 'select', function() {
// 在这里访问myVariable
console.log(myVariable);
// 根据需要使用myVariable的值
// ...
});
});
这种技术在多种场景下都很有用,例如:
undefined
原因:变量可能没有在正确的作用域内定义,或者在事件处理器被调用之前没有被赋值。
解决方法:确保变量在全局作用域或一个更广泛的作用域内定义,并且在事件处理器之前被赋值。
原因:如果select
元素是在文档加载后动态添加的,直接绑定事件处理器可能不会生效。
解决方法:使用事件委托,如上面的示例代码所示,通过$(document).on()
来绑定事件处理器。
通过上述方法,你可以确保在$(document).ready()
中设置的变量值能够在$(document).on('change', 'select', function() {...})
中被正确访问和使用。
领取专属 10元无门槛券
手把手带您无忧上云