内部的jquery函数.ready

时间:2010-06-05 18:42:56

标签: jquery

有人可以告诉我为什么'。(')之后的'function()'才能使脚本正常工作?

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});
</script>
</head>

<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button type="button">Click me</button>
</body>
</html>

3 个答案:

答案 0 :(得分:4)

function() { }定义了一个内联函数,然后将其作为参数传递给ready()

如果你做了

$(document).ready($(...).click());

或类似的东西,click返回值将被传递给ready函数,这将是完全不同的东西。当然,使用命名函数也可以这样做:

function initialize() {
    $("button").click(...); // ...
}

$(document).ready(initialize);

注意在最后一行()之后缺少initialize,这意味着“传递此函数”而不是“调用此函数并传递返回值”。顺便说一句,只是将函数传递给$本身($(function() { ... });)是$(document).ready的快捷方式。

答案 1 :(得分:0)

查看.ready:http://api.jquery.com/ready/

上的jquery文档

传递给ready的第一个参数是当dom准备就绪时要执行的回调处理程序。

你正在做的事情等同于此,这可能有助于你了解更好的情况:

<script type="text/javascript">
    function on_dom_ready() { 
        $("button").click(function(){
            $("p").hide();
        });
    };
    $(document).ready(on_dom_ready);
  </script>

答案 2 :(得分:0)

$(document).ready表示您传递给它的代码不会立即被调用,因为在javascript中是正常的,但只有在加载了东西之后。您可以通过匿名函数将代码传递给方法的两种方法之一。这正是你在做的事情。

你也可以这样做:

function setup(){
  $("button").click(function(){
    $("p").hide();
  });
}

$(document).ready(setup);

这将使用命名函数。