这实际上是两个问题。我正在使用jquery中的.eq方法,并决定使用jsfiddle测试它。让我感到困惑的是,当我提供一个明显超出界限的索引时,它仍然会返回一个obj而不是索引超出范围的错误。
console.log($("body").children("div").eq(2));
console.log($("body").children("div").eq(20));
所以我使用jquery中的.children方法做到了这一点。仔细检查一下,如果我指定一个选择器,它会给我正确的孩子,但如果我不这样做,它也会返回身体外的title元素。
console.log($("body").children());
console.log($("body").children("div"));
有人知道为什么吗?这是jsfiddle
答案 0 :(得分:6)
这只是jQuery开发人员的一个选择。如果选择器没有返回结果,那么它将是一个空的jQuery集合,而不是返回错误。
$("body").children("div").eq(20).length === 0
<title>
出现在<body>
jsfiddle.net自动拥有<html>
,<head>
和<body>
个元素。 HTML框架中的所有内容都已包含在<body>
中。您提供的<body>
会被忽略。我觉得奇怪的是<title>
最终在那里被接受了。
答案 1 :(得分:0)
至少在你的jsfiddle的情况下,jsfiddle自动将你在html区域中输入的所有内容注入到body标签中,这个例子最终会呈现如下所示的内容,所以你可以看到,title是一个身体的孩子
<html>
<head>
</head>
<body>
<title></title>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
</html>