美文网首页我爱编程
关于$(function(){初始化select数据})遇到的小

关于$(function(){初始化select数据})遇到的小

作者: 啥名都不好起 | 来源:发表于2018-05-21 11:30 被阅读82次

    关于$(function(){})相信很多人都熟悉,就是一个jq中封装的用于在页面加载时的自执行函数。而在原生中,我们也同样有也有类似的方法onready和onload。

    window.onready = function(){

       DOM结构加载完成后执行

        }

    window.onload = function(){

    整个页面加载完成后执行

        }

    关于jq,w3school告诉我们,一般而言,jQuery都会从document ready函数开始,查看详情

    但是,今天我使用$(function(){})对页面中的select中option的值进行选择并初始化的时候出现了一个问题,不管我是使用jq还是原生选择options对象的selectedIndex时,总是只能获取到第一个,这就导致我后面如果直接进行初始化会有很大问题(具体不赘述了)。我当时就在想会不会是因为加载顺序的原因,然后我写了一个定时器,把获取selectedIndex做了延迟执行,果然就没问题了。看来当$(function(){})在执行时页面还没有加载完毕,那问题又来了,$(function(){})执行的时候DOM结构加载完了吗?

    为了弄清楚,我写了个demo测试一下,

    这里的输出结果是:1  2  3

    由此可见,$(function(){})在执行的时候,DOM结构还没有加载完成,而有人看完了可能或疑惑,不是说"jQuery都会从document ready函数开始"吗,这句话理解起来可能会产生歧义,事实上这句话正好诠释了根本,因为$(function(){})执行的函数都是执行在document ready中的,所以只有当$(function(){})执行结束,document ready才有可能执行结束,而只有document ready执行结束dom结构才加载完成,所以说这句话没毛病,具体关系:

    相关文章

      网友评论

        本文标题:关于$(function(){初始化select数据})遇到的小

        本文链接:https://www.haomeiwen.com/subject/hklfjftx.html