javascript – jQuery模块模式:何时声明/查询元素?
作者:互联网
>通常,在$(document).ready()之前,您不会开始查询DOM.
>在下面的两个选项中,在$(document).ready()之外声明Widget(并查询元素).
>这样可以吗?我可以初始化jQuery元素(只要我不操作任何东西),就绪处理程序的OUTSIDE?
>将整个Widget定义放在$(document).ready()中会不会更好?
>我应该等到Widget.init()查询元素吗?
>注意:我是JS设计模式的新手,所以请注意我是否遗漏了一些东西
选项1
Widget = {
ele : $('#ele'),
init : function(){ ... }
};
$(document).ready(function(){
Widget.init();
});
选项2
Widget = (function(){
var privateEle = $('#privateEle');
return {
publicEle: $('#publicEle'),
init: function(){ ... }
};
}());
$(document).ready(function(){
Widget.init();
});
解决方法:
我会怎么做:
var Widget = (function(){
var ele;
function init(_ele){
ele = _ele;
};
return {
init: init
};
})();
$(function(){
Widget.init( $('#foo') );
});
如果您的脚本在jquery之前加载,您将看不到错误“undefined is not a function”.但是,如果你在domReady之前执行查询,你可能会得到意想不到的结果,ele = []
编辑:顺便说一句..把你的<脚本> < / body>之前的标签不在< head>< / head>内
标签:javascript,jquery,document-ready,module-pattern 来源: https://codeday.me/bug/20190729/1568333.html