- 通常,直到
$(document).ready()
才开始查询 DOM。 - 在下面的两个选项中,Widget 在
$(document).ready()
之外声明(并查询元素)。 - 这样可以吗?我可以在就绪处理程序之外初始化 jQuery 元素(只要我不操纵任何东西)吗?
- 将整个 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 = []
编辑:顺便说一句..把你的<script>
</body>
之前的标签不在 <head></head>
内
关于javascript - jQuery + 模块模式 : When to declare/query elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667329/