2012-07-11 60 views
2

JQuery新手。JQuery匿名函數沒有觸發

通過此代碼,'2'的警報有效,但從未警報'1'。 我可以切換順序並獲得相同的結果,並且必須加載JQuery,否則兩者都不起作用。那麼匿名函數的聲明有什麼問題呢?

<script type="text/javascript"> 
     $(document).ready(function() { 
      alert('1'); 
     }); 

     $(document).ready(
      alert('2') 
     ); 
    </script> 
+0

你錯過了'alert(2)'的函數文字,你知道嗎?這兩種方法都可以正常工作:http://jsfiddle.net/W44s7/ – 2012-07-11 14:41:02

+3

在這裏可以正常工作:http://jsfiddle.net/j08691/zgvjJ/。 – j08691 2012-07-11 14:41:46

+1

@Rob W你需要使用'no wrap(head)'。這將允許匿名函數首先觸發。根據他的情況,他們不應該觸發1 - > 2,而是2 - > 1。 – Ohgodwhy 2012-07-11 14:44:36

回答

2

這是不是

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

$(function() { 
... 
}); 

這些是等價的。在第二個例子中沒有function(){}的呼叫是錯誤的。

有幾個文件就緒功能是沒有意義的。只需將代碼放在一起即可。

4

您在第二次調用ready()時沒有傳遞函數,但返回的值爲alert()(即undefined)。

這意味着alert()被立刻調用(無需等待文件準備就緒),然後undefined傳遞給ready(),導致無操作(或者可能是一個錯誤,這取決於jQuery的您的版本正在使用)。

您的第一個電話是正確的方式。

+1

這是爲什麼downvoted?它正確地解釋了正在發生的事情以及發生的原因,並給出了一個建議的解決方法(通過使用第一個正確的方法)。 – 2012-07-11 14:46:40

+0

感謝您的回覆。 我知道方法'1'是正確的。但是在我的網頁上,警告'1'從不顯示,'2'顯示。然而,我看到jsfiddle它在那裏工作。 所以我想我的問題是'使用匿名函數()時會停止代碼的工作?「 – simon831 2012-07-11 15:12:45

+0

@simon,你使用的是最近發佈的jQuery嗎?在舊版本中將'undefined'傳遞給'ready()'可能會破壞事物並阻止先前註冊的處理程序被觸發。 – 2012-07-11 15:15:04