2010-06-05 86 views
2

任何人都可以告訴我爲什麼'function()'之後需要使用.ready來使腳本工作嗎?jquery裏面的函數.ready

<html> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("button").click(function(){ 
    $("p").hide(); 
    }); 
}); 
</script> 
</head> 

<body> 
<h2>This is a heading</h2> 
<p>This is a paragraph.</p> 
<p>This is another paragraph.</p> 
<button type="button">Click me</button> 
</body> 
</html> 

回答

4

function() { }限定一個內聯函數,然後將其作爲參數傳遞ready()

如果你沒有

$(document).ready($(...).click()); 

或類似的東西,的click返回值將被傳遞到就緒功能,這將是完全不同的東西。當然,同樣可以用命名函數來完成:

function initialize() { 
    $("button").click(...); // ... 
} 

$(document).ready(initialize); 

注意initialize就上線,這意味着後缺乏()「通過這個功能」,而不是「調用這個函數並傳遞返回值」 。順便說一下,只是將函數傳遞給$本身($(function() { ... });)是$(document).ready的快捷方式。

+0

非常有幫助。我知道了。 – Philip007 2010-06-05 19:37:40

0

拿上。就緒看看jQuery的文檔:http://api.jquery.com/ready/

傳遞給準備的第一個參數是回調處理器當DOM準備執行。

你在做什麼就相當於這一點,這可以幫助你瞭解發生了什麼事情更好一點:

<script type="text/javascript"> 
    function on_dom_ready() { 
     $("button").click(function(){ 
      $("p").hide(); 
     }); 
    }; 
    $(document).ready(on_dom_ready); 
    </script> 
+0

您能解釋.ready和.ready之後的'function()'之間的差異嗎? – Philip007 2010-06-05 18:51:02

0

$(document).ready意味着,你傳遞給它的代碼不會被立即爲被稱爲正常的JavaScript,但只有在東西被加載後。您可以通過匿名函數將代碼傳遞給方法的兩種方法之一。這正是你正在做的。

你也可以做這樣的:

function setup(){ 
    $("button").click(function(){ 
    $("p").hide(); 
    }); 
} 

$(document).ready(setup); 

這將使用一個命名函數。