Javascript jQuery就绪函数
有人能告诉我为什么DocumentReady函数需要先调用function吗?我被告知,下面第一个示例中的setTimeout(不起作用)将被计算并传递给ready,但我看不出第二个示例中的函数调用(起作用)有什么区别Javascript jQuery就绪函数,javascript,jquery,Javascript,Jquery,有人能告诉我为什么DocumentReady函数需要先调用function吗?我被告知,下面第一个示例中的setTimeout(不起作用)将被计算并传递给ready,但我看不出第二个示例中的函数调用(起作用)有什么区别 后者定义了文档准备就绪时将调用的函数,并将其作为参数传递给$(document).ready()。在前者中,传递给$(document).ready()的参数是计算setTimeout命令的结果,因此是的,在第一种情况下,setTimeout调用是立即的。后者定义了一个函数,该函
后者定义了文档准备就绪时将调用的函数,并将其作为参数传递给
$(document).ready()
。在前者中,传递给$(document).ready()
的参数是计算setTimeout
命令的结果,因此是的,在第一种情况下,setTimeout
调用是立即的。后者定义了一个函数,该函数将在文档准备就绪时调用,并将其作为参数传递给$(document).ready()
。在前者中,传递给$(document).ready()
的参数是计算setTimeout
命令的结果,因此是的,在第一种情况下,setTimeout
调用是立即的。您需要将回调传递给ready()
setTimeout
不会返回回调,也不会按照您的方式立即执行回调,并将其结果作为参数传递给ready
函数。这不是您想要的
只需将它包装在
函数(){}
中,它就会工作。您需要将回调传递给ready()
setTimeout
不会返回回调,它会立即执行,其结果作为参数传递给ready
函数。这不是您想要的
只需将它包装在
函数(){}
中,它就会工作。jQuery需要一个它可以调用的匿名函数
jQuery需要一个它可以调用的匿名函数
您提供的函数是一个回调函数,在DOM就绪时执行(整个页面可能尚未加载)。您提供的函数是一个回调函数,在DOM就绪时执行(整个页面可能尚未加载)。您需要向ready函数传递一个委托:
$(document).ready(function() {
// Do something
});
或者简单地说:
$(function() {
// Do something
});
您需要将委托传递给ready函数:
$(document).ready(function() {
// Do something
});
或者简单地说:
$(function() {
// Do something
});
让我们考虑一个更简单的例子。
function f (g) {
g();
}
此函数f
接受函数参数g
并调用它。因此,我们希望g
是一个函数
现在
相当于
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>代码>是代码> $(文档)。就绪< /COD>和<代码>警报<代码>是<代码> SETTIMEOUT函数。
让我们考虑一个更简单的例子。
function f (g) {
g();
}
此函数f
接受函数参数g
并调用它。因此,我们希望g
是一个函数
现在
相当于
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
是$(文档)。ready
和alert
是setTimeout
功能。不,它不工作,至少不一样。尽管在第一个示例中计时器启动,但当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
的调用根本没有任何效果。不,它不起作用,至少不起作用。尽管在第一个示例中计时器启动,但当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
的调用根本没有任何效果。…如果$('#set_3'),则可能会导致错误元素在2秒后未加载。通常,第一次调用对我来说完全没有意义…在第一种情况下,没有意义,因为它不知道如何处理…返回的整数,如果$(“#set_3”),则可能会导致错误元素在2秒后没有加载。通常,第一次调用对我来说毫无意义……在第一种情况下,它不知道如何处理通过说它需要匿名函数返回的整数有点误导。执行以下操作很好:function namedf(){alert(“hello”}))$(document).ready(namedef)
虽然jquery传入后不会按名称调用函数,但该函数并不是真正的匿名函数。说它需要匿名函数有些误导。做以下工作很好:functionnamedf(){alert(“hello”}))$(document).ready(namedef)
然而,一旦传入,jquery将不会调用这个函数