神秘的JavaScript / jQuery代码

时间:2013-12-29 22:28:57

标签: javascript jquery

我正在尝试理解我下载的一些JavaScript / jQuery代码:

<script type="text/javascript">

var messageDelay = 2000;  // How long to display status messages (in milliseconds)

// Init the form once the document is ready
$( init );


// Initialize the form

function init() {

  $('#contactForm').hide()                      // Hide the form initially
                   .submit( submitForm )        // on submit run submitForm() to check the inputs
                   .addClass( 'positioned' );   // position the form so it sits in the centre of the browser window.
    // do more stuff

}
</script>

$(init);线是问题。它似乎是指从下面开始定义的init()函数,但它如何调用init()?之前的注释行表示我们在DOM准备就绪时调用init(),但是没有标准的“$(function(){”等待DOM。

有谁知道这里发生了什么?

由于

3 个答案:

答案 0 :(得分:2)

如果您传递$(init)中的函数,则表示您希望在文档准备好时调用该函数。这是一个简写符号:

$(document).ready(init);

此处的相关jQuery文档显示了此表单:http://api.jquery.com/jQuery/#jQuery3


我个人发现$(document).ready(init);为更易读的代码提供更多代码,这就是我使用的代码。

答案 1 :(得分:2)

与写作相同:

$(function(){
  init();
});

或者

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

而不是使用匿名函数,他们只是将函数名称传递给调用....简短回答init()将不会触发,直到jQuery ready事件

答案 2 :(得分:0)

编写$(init)与使用匿名函数相同:$(function(){

两者都将函数传递到文档就绪