關于JS與jQuery中的文檔加載問題
jquery中的$(document).ready()
類似于javascript中的window.onload()
,但是其中還是有很大區(qū)別的
1.jquery中的可以簡化為$().ready(),$(function),
而js卻不行必須全部寫完。
2.同時js的window.onload()
只能有一個,而jquery的$(document).ready()
卻可以有多個。
3.最重要的一點是window.onload
必須等到頁面內(nèi)包括圖片的所有元素加載完畢后才能執(zhí)行。
$(document).ready()
是DOM結構繪制完畢后就執(zhí)行,不必等到加載完畢。
下面說說在項目中遇到的問題
先上代碼,這個demo中我不用引入jquery包就可以使用類似jquery的$(id)(我個人不建議使用),在這個demo中頁面會彈出"1",在此處完全沒有問題。
<!DOCTYPE html> <head> <title>JS</title> <script> function $(id){return document.getElementById(id)}; window.onload = function(){ alert($("aaa").value); }; </script> </head> <body> <input id="aaa" value="1" /> </body> </html>
再上代碼,此處的問題會報錯"Cannot read property 'ready' of null",可以自己先想想為什么。。。
<!DOCTYPE html> <head> <title>JS</title> <script src="js/jquery-2.1.1.min.js"></script> <script> function $(id){return document.getElementById(id)}; $(document).ready(function(){ //這是錯誤的代碼案列 $("#aaa").click(function(){ $("#aaa").hide(); }); }); </script> </head> <body> <a id="aaa" value="1" >aaaaaa</a> </body> </html>
問題在與我們對"$"定義了一個函數(shù),同時又想使用jquery提供的"$",所以報錯"Cannot read property 'ready' of null",問題在于我們寫的"$"影響了$(document)這塊,所以還是老老實實導包,別嫌麻煩,不然出現(xiàn)bug,要是在不熟悉的其中語法(代碼就一行,項目大的話還不容易發(fā)現(xiàn)。o(╥﹏╥)o),改bug就要更長的時間,也是醉了。
總結
以上所述是小編給大家介紹的JS與jQuery中的文檔加載問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
JS基于clipBoard.js插件實現(xiàn)剪切、復制、粘貼
這篇文章主要介紹了JS實現(xiàn)剪切、復制、粘貼——clipBoard.js 的相關資料,需要的朋友可以參考下2016-05-05JavaScript動態(tài)數(shù)量的文件上傳控件
本文給大家分享一段js代碼關于動態(tài)數(shù)量的文件上傳控件,代碼簡單易懂,非常不錯具有參考借鑒價值,感興趣的朋友一起看看2016-11-11