在什么情况下$(' body')什么都找不到?
我认为这是不可能的。因为DOM树中总会有 body 元素。
然而,我刚刚修正了一个错误原因。一些JS初始化代码通过对body元素的引用来保存变量。在某些情况下,此变量包含一个空的jQuery包装器。
答案 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()