在上一则该文中他们的标识符有两个怪异的 $(function(){}); 这代表的是甚么意思呢?只不过这短短两个字符串中的涵义并不所以单纯,并且还相当的复杂。不但这种,它还是众多新手中极难手忙脚乱的地方性。甚至 jquery 对它的支持都很多 bug 要注意的地方性。那个函数如此的重要,因此他们很大要来回去的研究几番。
首先没错的是 $(function(){}); 只不过是两个缩写,它等同 jquery 的 $(document).ready(function(){})。因此他们能晓得只不过 function 那个函数润色记号拿掉不然,它的函数就更单纯就直接是 $()。这是极难的 jquery 的表达式表述搞混为一谈的!我个人对这种读法是十分的不以为意,但 js 合作开发和现况嘛 … 他们晓得的,是不是方便快捷是不是来呗。比如说写出 $(“#box”) 它就表示两个 id 为 box 的 dom 结点,这 … 实在是很惊诧。但是现实生活已经是这种了,他们就背熟好了,当然这对从 C/C++ 转过身来的人而言很大是十分的伤痛,估计这也是为何会有位专门的业余叫后端开发人员的其原因 …
发了,不扯所以多。所以这个函数的意义是甚么呢?考虑没有 jquery 的情况下他们甚么样继续执行几段 js 标识符呢?只不过传统而言,只要写在 <script></script> 条码内就能了。但这种有位难题,是对某些应用程序而言,如果其中的标识符涉及到某一 dom 结点的位置在那段标识符之后不然就可能会失利。其原因是标识符在 html 文件格式的后面,应用程序写到它的时候就继续执行了,而 dom 结点在它后面应用程序还没读取到呢,因此不晓得甚么样去操作那个结点,只好收起了。你会说为何不要到大部份结点都读取完了再转头继续执行 js 标识符呢?关键性是很多标识符是想在网页出来一部分时就继续执行了啊。因此对那些在网页读取完才继续执行的标识符通常会网页的 onload 中去。但 onload 又有自己的难题,比如说 onload 的 window 的还有 body 的,继续执行的最佳时机很是不好确定。只好 jquery 推出了 $(document).ready(function(){}) 它的设计目标有以下两个(可看做 jquery 的 ready 函数与 js 的 onload 的差别):
1.继续执行时间
window.onload 必须要到网页内包括相片的大部份原素读取完后才能继续执行;
$(document).ready() 是 dom 结构绘制完后就继续执行,不必要到读取完。
2.编写个数不同
window.onload不能同时编写多个,如果有多个window.onload方法,只会继续执行两个
$(document).ready()能同时编写多个,并且都能得到继续执行。
特别是第二点,大大的方便快捷了标识符初始化的分离操作,确实是 jquery 对合作开发人员的巨大贡献。否则各个代码块中都要自己想办法在初始化函数中加入自己的那一部分,会相当的混乱。当然在各应用程序为实现那个目的是有自己的扩展的 — 可惜的是互相间不是不是兼容,写起来也是很不方便快捷。
另外传统是 onload 是这种写的:
<body onload=”fn1(),fn2()”></body>
而他们提到的 $(document).ready() 是 dom 解析完成后,不用等待相片等资源读取即可开始继续执行了,所以要等待的话是不是办呢?难道要写上面那种传统的标识符吗?当然不是,jquery 中是使用 $(window).load(function()。例如:
$(window).load(function() {alert(“hello,我是jQuery!”);});
而且那个函数同样能写多个,它们之间同样不会覆盖。会依次顺序继续执行!
但是!但是!他们很大要仔细看这一节内容。这只是 jquery 的设计目标,这是甚么意思呢?是说在实际运行时有的应用程序可能会有难题。是的,就算是 jquery 如此著名的控件有时也是有很明显的 bug 的。我手头上的 32 位 firefox 52.x 版本是不能在 jquery2.0.0 中完好的继续执行多个 $(document).ready(function(){}) 的。解决的方法只不过也很单纯:那是换两个版本的 jquery … 这只不过也挺伤痛的,因为 jquery 一共有 jquery 1.x、 jquery 2.x、 jquery 3.x 三个大的版本,小版本就更加多了。如果你以为要用最新的 3 版本,那你就错了。只不过上现在比较好的方法是,手机上尽量用最新的,而 pc 上最好是使用最新的版本 1.x 。甚么叫最新的 1.x ?是这种的 jquery 2 以后就不支持 ie6/7/8 了,而这种需求又很大,因此 jquery 的 1.x 仍然在修改维护,只是不加新功能了而已。我的上面那个难题是通过更新到 jquery-1.11.3 后解决的,这只不过不是最新的 1.x 不过听说太新的有可能有别的难题,而那个版本兼容性好罢了。总之他们在 pc 上如果某一常用功能不行不然,能考虑升级到 1.x 的最高版本。当然如果是十分追求新功能的不考虑 ie 兼容性的所以直接用最新的 jquery 版本就好了。不过要提醒的是,jquery 并不仅仅是在 ie 上才有不兼容的现象,如我上面的那个难题,只不过的应用程序同样会的,因此尽可能测试各种应用程序才是真正的版本选择标准。
最后提供两个下载各个版本 jquery 的好地方性,如图:
本来最好是应该是 google 的 cdn 分流的,但是国内访问 google 嘛 … 你懂的。因此用那个吧,那个也十分的棒!因为它来自强大的微软 … 另外对那些依赖网上的 jquery 或者别的 js/css 模块的 cdn 的人,我想说的是最好还是放个在自己的站点上,这些 cdn 没你想象的所以可靠,我都被坑个好几次了。
好了,以上内容希望对有后端合作开发任务的非专业后端合作开发开发人员有用 🙂 专业后端请路过吧