在研究了docs一段时间之后,我想出了我的第一个jQuery脚本。这是一个简单的Form Focus脚本。只是想确保我做对了。
我找不到任何与jQuery有关的“条件语句”,所以我假设你只使用标准的JavaScript if
/ else if
语句。
为了测试#id
是否存在,jQuery文档说明我应该使用.length
。
$(document).ready( function() {
if ($('#one').length) {
$('#one').focus();
}
else if ($('#two').length ) {
$('#two').focus();
}
else {
return false; // is this even necessary?
}
});
修改
#one
和#two
可能存在于同一页面上,因此我想首先定位#one
。
答案 0 :(得分:3)
你不需要测试长度。如果包装的集合为空,则不会调用焦点函数。如果只存在#one或#two,那么以下工作正常:
$(function() { // shorthand for $(document).ready()
$('#one, #two').focus();
});
答案 1 :(得分:1)
你的脚本是准确的,虽然你没有必要像你预期的那样返回你的else子句中的任何内容(甚至没有)
答案 2 :(得分:1)
取决于界面的显示方式...例如,元素1和2是否同时存在,如果不存在,您可以这样做:
$(document).ready( function() {
$('#one').focus();
$('#two').focus();
}
如果它们将在同一页面上存在,那么这很好:
$(document).ready( function() {
if ($('#one').length) {
$('#one').focus();
}
else {
$('#two').focus();
}
}
如果没有返回任何元素,.focus()实际上不会失败或任何东西,所以你可以在没有条件的情况下在1行中自由地进行。
此外,不需要返回false位。
答案 3 :(得分:1)
你的逻辑通常是正确的,虽然使用jQuery你可以真正减少cheks&使用标准Javascript
进行检测即使未找到对象(例如$("#one")
),调用jQuery对象上的方法或属性也不会返回错误
您可以一次获取多个DOM元素(例如$("#one,#two")
),您也可以同时调用所有这些对象上的方法
`
$(document).load(function(){...})
因此,您可以更新您的脚本:
$(document).ready(function() {
$('#one,#two').focus();
});
修改强>:
由于您表示要首先选择#one
,如果同一页面上同时存在#one
和#two
,您只需要{{1}在列表末尾的引用,如果它存在,它将始终被选中。
#one
答案 4 :(得分:0)
您所做的是功能正确。然而,随着jQuery的推进,您不希望进行多次查找。这将是一种更好的写作方式:
$(document).ready( function() {
var $one = $("#one"), $two = $("#two");
if ( $one.length ) $one.focus();
else if ( $two.length ) $two.focus();
});
每次使用$(“#id”)时,都会执行查找。如果你可以像var $one = $("#one")
那样第一次将它缓存在变量中,那么以后可以节省查找时间。我的变量名中的$
符号是完全随意的,但它可以帮助您记住哪些变量包含jQuery包装对象。