我应该使用jQuery .ready()函数吗?

时间:2013-06-06 20:35:36

标签: jquery

承包商为我现在支持的应用程序编写了以下代码。在我的其他脚本加载后,它出现在登录页面的head标签中,并且工作正常。我希望有人能解释一下:

1)以这种方式编码是否有利,而不是使用.ready()

2)使用.ready()而不是声明匿名函数会更好吗? (这是一个匿名函数,对吗?)

3)这个代码是否有可能在它试图引用的DOM之前执行,或者是jQuery以某种方式阻止了这个?

我正在使用jQuery 1.9.0。

<script type="text/javascript">
//<![CDATA[
$(function() {
    try {
        console.log( "login_panel.init" );
        // If no userid has been obtained from the user's cookies...
        var $userid = $( "#userid" );
        if ( '' == $userid.val() ) {
            // focus the user ID field.
            $userid.focus();
        } else {
            // The user ID has been autofilled so focus the password field.
            $( "#pwd" ).focus();
        }
    } catch ( e ) {
        console.log( e.message );
    }
});
//]]>
</script>

5 个答案:

答案 0 :(得分:4)

这实际上是$(document).ready();

的简写

你还好吗

以下是.ready();

的文档

http://api.jquery.com/ready/

答案 1 :(得分:2)

$(function() {只是撰写$(document).ready(function(){})

的另一种方式

这些都是一样的:

  • $(document).ready(handler)
  • $().ready(handler) (this is not recommended)
  • $(handler)

http://api.jquery.com/ready/

答案 2 :(得分:2)

您已经是,$(function() { .. })是文档就绪的快捷方式。

然而,try / catch和Yoda条件确实是不必要的。您所需要的只是:

<script type="text/javascript">
    $(function() {
        if ( $( "#userid" ).val() == '' ) {
            $( "#userid" ).focus();
        }else{
            $( "#pwd" ).focus();
        }
    });
</script>

答案 3 :(得分:2)

1)以这种方式编码是否有利,而不是使用.ready()

优点是它更容易理解jQuery的新手。并且更具可读性。

2)使用.ready()而不是声明匿名函数会更好吗? (这是一个匿名函数,对吗?)

参考上面的回答

3)这个代码是否有可能在它试图引用的DOM之前执行,或者是jQuery以某种方式阻止了这个?

有可能。但是为此你必须将javascript代码放在脚本中使用的标记之后,这次你不必将它包含在函数中。但这是一个非常糟糕的做法。您应该使用此语法或文档。你懂?最佳做法是在所有标记结束后但在完成</body>标记之前使用所有脚本。但当然有这种语法或文档准备

答案 4 :(得分:1)

$(document).ready()

的简写
$(document).ready 

是dom完成渲染时发生的事件。