我正在看一段代码:
(function($) {
// other code here
$(document).ready(function() {
// other code here
});
})(jQuery);
我虽然IIFE可以执行$(document).ready的功能,但是此代码正确吗?或者我可以只删除$(document).ready并将代码直接放在IIFE内。
最佳答案
否,IIFE不会执行文档准备就绪的代码。
1.在IIFE中:
(function($) {
console.log('logs immediately');
})(jQuery);
这段代码立即运行,日志“立即日志”,无需准备文件。
2.准备就绪:
(function($) {
$(document).ready(function(){
console.log('logs after ready');
});
})(jQuery);
立即运行代码,等待文档准备就绪,并记录“准备就绪后的日志”。
这可以更好地理解:
(function($) {
console.log('logs immediately');
$(document).ready(function(){
console.log('logs after ready');
});
})(jQuery);
这将在窗口加载后立即将“立即日志”记录到控制台,但仅在文档准备好之后才记录“就绪后的日志”。
IIFE不是准备就绪的替代方法:
$(document).ready(function(){})
的替代方法是:$(function(){
//code in here
});
更新资料
从jQuery 3.0版开始,更改了ready处理程序。
Only the following form of ready handler is recommended.
jQuery(function($) {
});
Ready handler is now asynchronous.
$(function() {
console.log("inside handler");
});
console.log("outside handler");
关于jquery - jQuery最佳实践,在IIFE中使用$(document).ready吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24930807/