2012-05-15 116 views
10

要對現場工作日期選擇器,我必須把這個劇本我的元素

$(function() { 
    $("#date_datepicker").datepicker({ dateFormat: "yy-mm-dd" }); 
}); 

卸下$(function() {使得日期選擇器不工作裏面。

那麼這是否意味着$(function() {$(document).ready相同?

我想優化我的JavaScript代碼,所以知道這可能會有所幫助。

+0

可能重複://計算器.com/questions/5754192/jquery-document-ready-function) – jtheletter

回答

19

查看來自http://api.jquery.com/ready/

所有三種以下語法下面的提取物是等效的:

  • $(document).ready(handler)
  • $().ready(handler)(這是不推薦)
  • $(handler)
+2

謝謝,我在谷歌搜索,但我認爲有一些像$這樣的特殊字符很難得到正確的結果。 – MegaNairda

4

是的,它是同一件事的簡寫版本。當函數作爲參數傳遞時,$函數調用$(document).ready函數。

如果您嘗試在速度方面進行優化 - 兩者的表現都會相當,但如果執行很多次,則較長的$(document).ready(handler)速度會稍微快一些。

如果您嘗試根據文件大小進行優化 - 請使用縮小器。

國際海事組織最好你可以做的就是在可讀性和簡單性方面進行「優化」。這使代碼更容易理解和維護。有一些工具可以爲您提供未經優化的版本並進行壓縮和優化(查看Google的閉包編譯器)。

+0

我的代碼包含我在頁面頂部提到的兩個。這是一件好事,但我沒有遇到麻煩,他們都在我的頁面頂部。我會嘗試使用縮小器,就像我手動優化我的代碼之後所說的那樣,減少了冗餘代碼,例如這些和其他類似的調用,可以將它們合併爲一個函數調用 – MegaNairda

+0

我希望我不會遇到兼容性問題使用_shorthand_時出現問題,比如使用ajax速記'$ .post'時出現什麼情況? – MegaNairda

1

是的,$(function() {$(document).ready是相同的。

$(function() {作爲簡寫語法,但$(document).ready使代碼更具可讀性。

+1

謝謝,我還希望'$(document).ready'而不是'$(function(){'。 – MegaNairda

3

的。就緒()方法通常使用匿名函數:

$(document).ready(function() { 
    // Handler for .ready() called. 
}); 

這等效於調用:

$(function() { 
// Handler for .ready() called. 
}); 

As can be read here

-1

是否使用jQuerymobile?如果是這樣,而不是使用文件準備使用

$('#pageId').live('pageinit',function(){}); 
+0

不是真的,只是普通的jQuery。 – MegaNairda

1

這裏是一個很安全的運行準備

編碼方式
jQuery(function($, undefined){ 
    // code to run onready 
}); 

儘管我個人更喜歡做這樣的:

(function($){ // create scope and pass specific aliased variables 

    $(function($, undefined){ // attach callback to run onready 
     // code to run onready 
    }); 

})(jQuery); 

這種方式可以使自己的功能包,而不必擔心破壞其他人的代碼,或者讓你的代碼由鬆散的變量定義打破。例如,您也可以調用您傳遞的變量以及您想要的任何名稱,並擁有未準備就緒的代碼。

(function($){ // create scope and pass specific aliased variables 


    $(document).on('click', 'a[href]', function(){ 
     // code to run when a link is clicked 
    }); 
    $(window).on('load',function(){ 
     // code to run onload 
    }); 
    $(function($, undefined){ // attach callback to run onready 
     // code to run onready 
    }); 


})(jQuery); 

注意,這些都是一樣的

$(document).bind('ready', function(){}); 
$(document).on('ready', function(){}); 
$(document).ready(function(){}); 
$(function(){}); 

而且該文件沒有加載事件

$(document).on('load', function(){}); // will not work 
[jQuery的文件準備就緒功能(HTTP的
相關問題