Jquery eq(索引越界)和孩子们

时间:2013-08-29 19:42:08

标签: javascript jquery html

这实际上是两个问题。我正在使用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

2 个答案:

答案 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>