有人可以告诉我为什么'。(')之后的'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>
答案 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);
这将使用命名函数。