原生JS與jQuery文件載入完畢的寫法

2022-04-07 04:37:32 字數 1442 閱讀 5841

html是有執行順序的,預設是自上而下執行。所以當我們的js**在html**下邊的時候,可以正常執行,而當我們的js**在html**上邊的時候,可以就無法正常執行了,這時,我們需要在文件載入完畢的時候才去執行js**,所以通常我們會這樣做:

一、當不引入jquery框架,只寫原生js**時,需要用window物件的onload事件

window.onload = function()

(注:在使用時,window.onload可直接簡寫成onload,但是為了不發生歧義及造成不必要的錯誤,最好是把window寫上)

二、在引入jquery時,可以有多種寫法,這裡只列出一種最複雜(其他寫法基本都是此種的變形)的,和2種最常見的寫法

1、最複雜的一種寫法:

;(function($,window,document,undefined))(jquery,window,document);

(1)、在最開始使用分號的目的是為了防止多個檔案壓縮合併時,因為其他檔案最後一行語句沒加分號,而引起合併後的語法錯誤(如果能確保不會有多個檔案壓縮合併的情況,可以不寫這個分號)

(2)、這就是乙個匿名函式的自執行,一般js庫都採用這種自執行的匿名函式來保護內部變數

(3)、形參中的$是jquery的簡寫,很多方法和類庫也使用$,這裡$接收jquery物件,也是為了避免$變數衝突,保證多個外掛程式之間可以正常執行(如果只引入了jquery這乙個外掛程式,可以不寫這個)

(4)、實參分別接收window,document這兩個物件,window,document這兩個物件都是全域性環境下的,而在函式體內的window,document其實是區域性變數,不是指全域性的window,或是document物件。這樣做有個好處就是可以提高效能,減少作用域的查詢時間(如果在函式體內需要多次呼叫window,或是document物件,這樣把window或是document物件作為引數傳進去,是非常有必要的。如果**中沒有用到這兩個物件,那麼就不需要傳這兩個引數了)

(5)、使用undefined的原因:

①因為undefined是window的屬性,宣告為區域性變數之後,在函式中如果再有變數與undefined做比較的話,程式就可以不用到window下搜尋undefined,可以提高程式的效能

②undefined在有些版本較舊的瀏覽器是不被支援的,直接使用會報錯,js框架就要考慮到相容性問題,所以增加乙個形參undefined

2、比較常用的寫法:

$(document).ready(function());

(注:①在不確定是否只引入jquery乙個js框架的時候,**中的$可以像複雜寫法那樣通過引數的形式傳遞,②**中的document可省略)

3、最簡單的一種寫法:

$(function());

(注:細節情況與上種方法相同)

三、總結:文件載入完畢的寫法可以有多種,需要按照實際情況和個人習慣使用。

jquery與原生js比較

以選擇符為例,類似於這種 class 方式,在ie裡面,肯定比 id 低很多,而對於chrome和firefox,則因為提供了getelementsbyclassname 介面,所以速度不會特別慢,不需要遍歷所有元素檢視class,所以考慮乙個綜合的方案,應優先使用id選擇符。測試方法 對於一次處理...

移動端滾動載入 jQuery 和 原生JS

判斷滾動條到底部,需要用到dom的三個屬性值,使用jquery分別是 body scrolltop 為滾動條在y軸上的滾動距離。window height 為內容可視區域的高度。body height 為內容可視區域的高度加上溢位 滾動 的距離。從這個三個屬性的介紹就可以看出來,滾動條到底部的條件即...

移動端滾動載入 jQuery 和 原生JS

判斷滾動條到底部,需要用到dom的三個屬性值,使用jquery分別是 body scrolltop 為滾動條在y軸上的滾動距離。window height 為內容可視區域的高度。body height 為內容可視區域的高度加上溢位 滾動 的距離。從這個三個屬性的介紹就可以看出來,滾動條到底部的條件即...