标签:javascript jquery document-ready module-pattern
>通常,在$(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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。