2009-12-04 80 views
1

在下面的代码片段:jQuery的DOM准备

<form> 
    <fieldset> 
     <button id="indexGetStarted" class="button" type="submit">Get Started!</button> 
    </fieldset> 
</form> 
<script type="text/javascript"> 

    $(document).ready(function() { 

     $('#indexGetStarted').click(function() { 
      $('form').submit(); 
      return false; 
     }); 

    }); 

</script> 

$(document).ready(function() { ... }必要吗?

回答

9

不是绝对的,因为你已经在执行这个脚本之前声明了你的按钮(然后是你的表单),它总是可用的。但删除该函数将使您的代码依赖于脚本块和html元素在文档中的相互关系。

+1

这就是我所怀疑的。 IE使用DOM就绪功能会出现延迟,特别是在附加视觉样式时。我只是想安全地消除它。 – Rudy 2009-12-04 07:31:45

2

是的,它需要编写干净的代码,但它有一个捷径:

$(function() { .... }); 
// is the same as 
$(document).ready(function() { .... }); 

操作DOM对象,附上事件的行为等之前的DOM对象有满载将是不可预测的,往往不工作。

可能如果在加载脚本部分之前声明元素,则可以工作。

0

严格来说,如果您访问随附代码中的DOM元素,它总是必要的。 $(document).ready()延迟代码的执行,直到完全构建DOM树,这很重要,因为您通过$('#indexGetStarted')访问DOM树。实际上,它可能会工作,但我不会推荐它。

0

不,不需要。如果您将脚本放在源中的DOM元素之后,则这些元素自然可用。有些测试表明,这会加速渲染速度,尤其是在IE中。

您可以在标记中早些时候将东西绑定到“就绪”事件,然后在关闭正文之前运行$.ready(),并获得相同效果。