将函数传递给jQuery .ready()函数
我目前正在使用Simon Willson's addLoadEvent函数来添加我想在加载事件之后运行的函数。我遇到了一个问题,其中传递给addLoadEvent函数的函数引用了尚未由DOM加载的div,因此我的操作(显示div)没有做任何事情。当我更改为使用jQuery $(document).ready函数时,div已由DOM加载,并且可以使用它执行操作(使其显示)。将函数传递给jQuery .ready()函数
因此,一对夫妇的问题。为什么我的函数在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);
并且/或者使用快捷键' $(myFunc)'。 –
这不起作用 – Jeremy
@Jeremy:究竟是什么意思?**什么**不起作用?如果你不提供你的代码,我们无法提供帮助。作为jsfiddle清楚地显示出来的。 –
如果你需要很多功能被加入,我建议你做到以下几点:
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.
你”重启。
我仍然收到一个错误,说“myFunc不是函数” – Jeremy
function jqueryAddReadyEvent(myFunc) {
$(myFunc);
}
jqueryAddReadyEvent(function() {
alert('hello world');
});
它看起来正确的给我。最有可能的是你用一种不是函数的方式来调用它。
顺便说一句,您可以缩短这:
var jqueryAddReadyEvent = $(document).ready
或只使用$(文件)。就绪()直接为同样的效果,因为它专门做了你想做的事,后负荷运行功能,而且实际上更短。
$(document).ready(funcA);
$(document).ready(funcB);
如果您收到此错误,那么你是不是传递一个函数来'jqueryAddReadyEvent'(http://jsfiddle.net/fkling/A2Pm3/)。 –
你传递给jqueryAddReadyEvent的参数是什么?你确定它是一个函数吗? –
尽管我不推荐它,但您始终可以使用'setTimeout'。我敢说'$(document.read(function(){funcA(); funcB();});'是最好的方法。找出更多关于你的参数的信息(如果你还没有查找'console.log',你会喜欢的) – Jacksonkr