编程语言
首页 > 编程语言> > javascript – jQuery模块模式:何时声明/查询元素?

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