我目前正在使用Simon Willson's addLoadEvent函数添加我想在load事件后运行的函数。我遇到了一个问题,其中我传递给addLoadEvent函数的函数引用了一个尚未被DOM加载的div,所以我的动作(显示div)没有做任何事情。当我改为使用jQuery $(document).ready函数时,div已经被DOM加载了,我可以用它执行动作(让它显示出来)。
所以,有几个问题。为什么我的函数在使用上面的函数加载完DOM之前执行?有没有办法推迟呢?我能想到的另一种选择是将函数传递给jquery等价物:
function jqueryAddReadyEvent(myFunc)
{
$(document).ready(function()
{
//execute already existing functions
//add a new function to the ready event
myFunc();
}
}
当我尝试上面的代码时,我收到一个javascript错误“myFunc不是函数”。有没有办法将函数一般传递给jquery ready函数并让它执行?相当于以下内容:
$(document).ready(function()
{
funcA();
}
$(document).ready(function()
{
funcB();
}
...//more of the same
替换为以下内容:
jQueryAddReadyEvent(funcA);
jQueryAddReadyEvent(funcB);
答案 0 :(得分:2)
答案 1 :(得分:1)
如果您需要添加许多功能,我建议您执行以下操作:
Create an array that will old all the functions you want to call.
Add functions to that array as you please.
In the .ready(function() { ... }) call every function in that array.
你已经确定了。
答案 2 :(得分:0)
function jqueryAddReadyEvent(myFunc) {
$(myFunc);
}
jqueryAddReadyEvent(function() {
alert('hello world');
});
答案 3 :(得分:0)
对我而言看起来是正确的。很可能你用的东西不是函数来调用它。
顺便说一句,你可以将其缩短为:
var jqueryAddReadyEvent = $(document).ready
或者直接使用$(document).ready()来获得相同的效果,因为它专门做你想做的事情,在加载后运行函数,实际上更短。
$(document).ready(funcA);
$(document).ready(funcB);