任何人都可以告诉我为什么文件就绪功能需要首先调用功能吗?我被告知下面第一个例子中的setTimeout(它不起作用)将被评估并传递给ready,但是我没有看到第二个例子中函数调用的区别是什么(有效) ?
$(document).ready(
setTimeout(
function(){
$('#set_3').innerfade({
animationtype: 'fade',
speed: 'slow',
timeout: 3000,
type: 'sequence',
containerheight: '180' });
},
2000);
);
$(document).ready(
function(){
setTimeout(
function(){
$('#set_3').innerfade({
animationtype: 'fade',
speed: 'slow',
timeout: 3000,
type: 'sequence',
containerheight: '180' });
},
2000);
}
);
答案 0 :(得分:6)
后者定义了一个在文档准备好时调用的函数,并将其作为参数传递给$(document).ready()
。在前者中,传递给$(document).ready()
的参数是评估setTimeout
命令的结果,所以是的,在第一种情况下,setTimeout
调用是立即的。
答案 1 :(得分:4)
您需要将回调传递给ready()
。 setTimeout
不会返回回调,它会立即执行 ,并将其结果作为参数传递给ready
函数。那不是你想要的。
只需将其包裹在function() { }
中即可。
答案 2 :(得分:3)
让我们考虑一个更简单的例子。
function f (g) {
g();
}
此函数f
接受函数参数g
并调用它。因此,我们希望g
成为一个函数。
现在
f (alert("Wrong"));
相当于
var param = alert("Wrong");
f(param);
您会看到,在第一行会显示警告框(评估语句)并将undefined
返回param
。但是f
需要一个函数,而不是undefined
。
需要一个功能。一种方法是创建一个:
function param () { alert("Right"); }
f(param);
但Javascript也支持匿名函数,格式为
var param = function () { alert("Right"); }
f(param);
现在消除您将获得的param
变量
f(function () { alert("Right"); });
对应于您的问题,f
为$(document).ready
,alert
为setTimeout
函数。
答案 3 :(得分:2)
jQuery期待它可以调用的匿名函数。
答案 4 :(得分:2)
您需要将委托传递给ready函数:
$(document).ready(function() {
// Do something
});
或者简单地说:
$(function() {
// Do something
});
答案 5 :(得分:0)
您提供的功能是在DOM准备就绪时执行的回调(整个页面可能尚未加载)。
答案 6 :(得分:0)
不,它不起作用,至少不一样。虽然在第一个示例中启动了计时器,但在ready
事件发生时它不会启动。
在第一个示例中,使用ready
方法的结果调用setTimeout
方法。由于setTimeout
返回超时的句柄而不是ready
方法可以使用的委托,因此它与:
setTimeout(
function(){
$('#set_3').innerfade({
animationtype: 'fade',
speed: 'slow',
timeout: 3000,
type: 'sequence',
containerheight: '180' });
},
2000);
$(document).ready();
因此,立即调用setTimeout
方法,对ready
的调用完全没有效果。