承包商为我现在支持的应用程序编写了以下代码。在我的其他脚本加载后,它出现在登录页面的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>
答案 0 :(得分:4)
答案 1 :(得分:2)
$(function() {
只是撰写$(document).ready(function(){})
这些都是一样的:
$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)
答案 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完成渲染时发生的事件。