$(' body')可以返回一个空数组吗?

时间:2016-02-23 10:31:40

标签: jquery

在什么情况下$(' body')什么都找不到?

我认为这是不可能的。因为DOM树中总会有 body 元素。

然而,我刚刚修正了一个错误原因。一些JS初始化代码通过对body元素的引用来保存变量。在某些情况下,此变量包含一个空的jQuery包装器。

2 个答案:

答案 0 :(得分:2)

如果您在head元素呈现之前将javascript放在body元素中,那么这种情况会如何发生。

以下文档会显示提示

  

$('body')。length == 0

<!DOCTYPE html>
<html>

  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

    <script type="text/javascript">
      var b = $('body');
      alert("$('body').length == " + b.length);
    </script>

  </head>

  <body>
    <h1>Hello World!</h1>
  </body>

</html>

这就是为什么,在jquery中,你通常会这样做:

$(function() {
   // Your code here
});

这个习惯用法确保您的代码在页面加载后运行。

作为另一个例子,对上述代码的轻微更改会显示警告

  

$('body')。length == 1

<!DOCTYPE html>
<html>

  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

    <script type="text/javascript">
      $(function() {
        var b = $('body');
        alert("$('body').length == " + b.length);
      });
    </script>

  </head>

  <body>
    <h1>Hello World!</h1>
  </body>

</html>

答案 1 :(得分:0)

如果您没有页面上的元素(错误代码)或页面未加载complet ...

将您的代码放入$( document ).ready()