2012-07-11 61 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