-2

我知道这个问题已经出现了很多次,但它们看起来都与这个有点不同。下面是我在 apache 上运行的文件。

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  hello 

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  <script>
  $.ready(function() {
    $("body").append("world");
  });
  </script>

</body>
</html>

在回答这个问题之前,请查看http://jsperf.com/document-ready-vs-fn-ready-pointless-optimizations-ftw/2 。

4

7 回答 7

7

它应该是

$(document).ready(function() {

});
于 2012-07-22T14:59:02.773 回答
5

jsPerf 案例是有缺陷的。当 DOM 实际就绪时在$.ready内部调用。它将运行传递给. 因此,自己调用它是没有意义的:$(document).ready

  • 这是一个内部函数
  • 它不会等待 DOM 准备好
  • 它不接受函数

只需使用正常功能$(...),或者$(document).ready(...)这就是您要寻找的功能($.ready不是jsPerf建议的替代方法)。

于 2012-07-22T15:10:48.610 回答
3

在回答这个问题之前,请查看http://jsperf.com/document-ready-vs-fn-ready-pointless-optimizations-ftw/2 。

页面标题为“毫无意义的优化”是有原因的。

与其进行无意义的优化——在这种情况下,您将在每次浏览量中减少一微秒或更短时间——只需使用记录在案的方法在文档就绪时运行代码即可。

这里的答案是使用正常的方式,去谷歌“过早优化”。

于 2012-07-22T15:19:18.550 回答
2

$.ready不是实用函数,试试这个:

$(document).ready(function() {
    $("body").append("world");
});
于 2012-07-22T14:59:11.067 回答
2

document.ready回调的另一种选择是 -

$(function(){

});

我喜欢这个,因为它很容易记住,并且在您审查代码时足够独特,可以脱颖而出。


ready()函数的 jQuery 文档中 -

传递给 .ready() 的处理程序保证在 DOM 准备好后执行,因此这通常是附加所有其他事件处理程序和运行其他 jQuery 代码的最佳位置。

所以要解释原始语法 -$('document').ready(function() { ... }您正在做的是将ready回调函数附加到document对象,以便您知道何时加载所有 DOM 以及您的 jQuery 库。

于 2012-07-22T15:00:13.857 回答
2

将您的脚本移出body标签,看看是否有区别..不确定这是否是原因..

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  hello 

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>


</body>
<script>
  $.ready(function() {
    $("body").append("world");
  });
  </script>
</html>
于 2012-07-22T15:09:28.963 回答
1

这也将起作用:

$(function () {
  $('body').append('world');
});
于 2012-07-22T15:01:39.083 回答