2012-06-25 17 views
1

我對Twitter Bootstrap的JS文件中的語法有疑問。這是一個例子文件(引導-dropdown.js):Twitter上的jQuery語法Bootstrap JS FILES

!function ($) { 

/* ... */ 

    /* APPLY TO STANDARD DROPDOWN ELEMENTS -- QUESTION CODE 
    * =================================== */ 
    $(function() { 
    $('html').on('click.dropdown.data-api', clearMenus) 
    $('body') 
     .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() }) 
     .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) 
    }) 

}(window.jQuery); 

爲什麼他們擁有jQuery函數$內部的代碼塊(函數(){})?我認爲它沒有包含jQuery函數。

感謝

回答

1

該函數的行爲與$(document).ready()類似,因爲它應該用於包裝頁面上的其他$()操作,這些操作取決於DOM準備就緒。

檢查doc

+0

所以,如果我宣佈這個JS FLE在BODY結束,封閉的jQuery函數沒有任何作用? –

+0

@JoseS **幾乎**沒有效果,瀏覽器可能會在''結束和DOM準備就緒之間進行操作。你應該保留它,至少作爲一種安全措施。 – Sherbrow

1
!function ($) { 
    ... 
}(window.jQuery); 

用來創建範圍(認爲命名空間)是誰的變量不會污染全局命名空間。

如果不會使用,例如toggle變量會污染全局名稱空間。

+0

謝謝你的答案,但我問的內部jQuery函數封裝,後說:「適用於標準刪除元素 - 問題代碼」 –