1

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

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>
4

5 回答 5

4

这实际上是 $(document).ready(); 的简写。

你还好

这是关于 .ready(); 的文档。

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

于 2013-06-06T20:36:43.827 回答
2

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

优点是对于 jQuery 的新手来说更容易理解。并且更具可读性。

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

参考上面的答案

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

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

于 2013-06-06T20:48:41.963 回答
2

$(function() {只是另一种写作方式$(document).ready(function(){})

这些都是一样的:

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

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

于 2013-06-06T20:36:53.667 回答
2

你已经是,$(function() { .. })是文件准备好的快捷方式。

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

<script type="text/javascript">
    $(function() {
        if ( $( "#userid" ).val() == '' ) {
            $( "#userid" ).focus();
        }else{
            $( "#pwd" ).focus();
        }
    });
</script>
于 2013-06-06T20:37:18.347 回答
1

的简写$(document).ready()

$(document).ready 

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

于 2013-06-06T20:37:21.707 回答