3

这实际上是两个问题。我正在使用jquery中的 .eq 方法,并决定使用 jsfiddle 对其进行测试。令我困惑的是,当我提供一个明显超出范围的索引时,它仍然返回一个 obj 而不是索引超出范围错误。

console.log($("body").children("div").eq(2));
console.log($("body").children("div").eq(20));

所以我使用jquery的 .children 方法做到了这一点。经过仔细检查,如果我指定了一个选择器,它会给我正确的孩子,但如果我不这样做,它也会返回正文之外的标题元素。

console.log($("body").children());
console.log($("body").children("div"));

有人知道为什么吗?这是jsfiddle

4

2 回答 2

6

没有索引超出范围

这只是 jQuery 开发人员的选择。如果选择器没有返回任何结果,它将是一个空的 jQuery 集合而不是返回错误。

$("body").children("div").eq(20).length === 0

<title>出现在<body>

jsfiddle.net 自动具有<html><head><body>元素。HTML 框架中的所有内容都已包含在<body>. 您提供的将<body>被忽略。不过,我确实觉得奇怪的是<title>最终在那里可以接受。

于 2013-08-29T19:45:56.913 回答
0

至少在您的 jsfiddle 的情况下,jsfiddle 会自动将您在 html 区域中键入的所有内容注入到 body 标记中,您的示例最终会呈现如下内容,因此您可以看到,title 是 body 的子项。

<html>
  <head>
  </head>
  <body>
    <title></title>
    <div></div>
    <div></div>
    <div></div>

    <div></div>
    <div></div>
    <div></div>
  </body>
</html>
于 2013-08-29T19:54:55.410 回答