Javascript 将函数传递给jQuery.ready()函数

Javascript 将函数传递给jQuery.ready()函数,javascript,jquery,event-handling,Javascript,Jquery,Event Handling,我目前正在使用函数添加我希望在加载事件后运行的函数。我遇到了一个问题,我传递给addLoadEvent函数的函数引用了DOM尚未加载的div,因此我的操作(显示div)没有做任何事情。当我改为使用jQuery$(document).ready函数时,DOM已经加载了div,我可以用它执行操作(使其显示) 所以,有几个问题。为什么我的函数要在DOM使用上述函数完成加载之前执行?有没有办法推迟呢?我可以想到的另一种选择是将函数传递给jquery等价物: function jqueryAddReady

我目前正在使用函数添加我希望在加载事件后运行的函数。我遇到了一个问题,我传递给addLoadEvent函数的函数引用了DOM尚未加载的div,因此我的操作(显示div)没有做任何事情。当我改为使用jQuery$(document).ready函数时,DOM已经加载了div,我可以用它执行操作(使其显示)

所以,有几个问题。为什么我的函数要在DOM使用上述函数完成加载之前执行?有没有办法推迟呢?我可以想到的另一种选择是将函数传递给jquery等价物:

function jqueryAddReadyEvent(myFunc)
{ 
    $(document).ready(function()
    {
        //execute already existing functions
        //add a new function to the ready event
        myFunc();
    }
}
当我尝试上面的代码时,我得到一个javascript错误“myFunc不是一个函数”。有没有一种方法可以将函数一般地传递给jqueryready函数并让它执行?相当于以下内容:

$(document).ready(function()
{
    funcA();
}
$(document).ready(function()
{
    funcB();
}
...//more of the same
jQueryAddReadyEvent(funcA);
jQueryAddReadyEvent(funcB);
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.
替换为以下内容:

$(document).ready(function()
{
    funcA();
}
$(document).ready(function()
{
    funcB();
}
...//more of the same
jQueryAddReadyEvent(funcA);
jQueryAddReadyEvent(funcB);
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.

如果需要添加许多功能,我建议您执行以下操作:

$(document).ready(function()
{
    funcA();
}
$(document).ready(function()
{
    funcB();
}
...//more of the same
jQueryAddReadyEvent(funcA);
jQueryAddReadyEvent(funcB);
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.

设置完毕。

如果需要添加许多功能,我建议您执行以下操作:

$(document).ready(function()
{
    funcA();
}
$(document).ready(function()
{
    funcB();
}
...//more of the same
jQueryAddReadyEvent(funcA);
jQueryAddReadyEvent(funcB);
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.
您已经设置好了。

您只需执行以下操作:

$(document).ready(myFunc);
将函数附加到DOM就绪事件。这是小提琴:

你可以做:

$(document).ready(myFunc);
将函数附加到DOM就绪事件。这是小提琴:

演示:


演示:

我觉得它很正确。很可能您调用它时使用的不是函数

顺便说一句,您可以将其缩短为:

var jqueryAddReadyEvent = $(document).ready
或者直接使用$(document).ready()实现相同的效果,因为它专门做您想要做的事情,在加载后运行函数,实际上更短

$(document).ready(funcA);
$(document).ready(funcB);

在我看来这是正确的。很可能您调用它时使用的不是函数

顺便说一句,您可以将其缩短为:

var jqueryAddReadyEvent = $(document).ready
或者直接使用$(document).ready()实现相同的效果,因为它专门做您想要做的事情,在加载后运行函数,实际上更短

$(document).ready(funcA);
$(document).ready(funcB);

如果您遇到此错误,那么您没有将函数传递给
jqueryAddReadyEvent
()。您传递给jqueryAddReadyEvent的参数是什么?您确定它是一个函数吗?您可以始终使用
setTimeout
,尽管我不推荐使用它。我敢说,
$(document.read(function(){funcA();funcB();})
是最好的方法。另外,在
jqueryAddReadyEvent
中尝试
console.log(arguments)
以了解有关参数的更多信息(如果您还没有查找
console.log
,您会喜欢它)。如果您遇到此错误,那么您没有将函数传递给
jqueryAddReadyEvent
()。您将传递给jqueryAddReadyEvent的参数是什么?您确定它是一个函数吗?您可以始终使用
setTimeout
,尽管我不建议使用它。我敢说
$(document.read(function(){funcA();funcB();});
是最好的方法。另外,在
jqueryaddryEvent
中尝试
console.log(参数)
以了解有关参数的更多信息(如果您没有查找
console.log
,您会喜欢它)。和/或使用快捷方式
$(myFunc)
@Jeremy:这到底意味着什么?什么不起作用?如果你不提供你的代码,我们就无能为力。这个方法本身可以工作,正如JSFIDLE清楚地显示的那样。@Felix Kling:我传递到这个函数中的显示我的div的函数不起作用。如果我传递一些简单的东西,比如警报,我会看到警报弹出窗口。如果我有我的div show在$(document).ready()区域中单独调用函数,它会显示我的div。但是将div show函数传递到上面的示例中并不会显示div。再次遍历函数时,会调用我的divShow函数,但在DOM完成加载之前会调用它(使div显示返回null)。因为这个通用表单函数存在于一个单独的js文件中,这会影响ready事件的触发时间吗?@Jeremy:正如我所说的,如果你不发布代码,我们帮不了你多少忙。显然你没有正确地传递函数,你调用它太早了。确保你没有在必须传递它的地方调用函数。
ready
事件将始终在源代码完全解析后激发。只需确保在调用/传递函数之前包含该文件。和/或使用快捷方式
$(myFunc)
@Jeremy:这到底意味着什么?什么不起作用?如果你不提供你的代码,我们就无能为力。这个方法本身可以工作,正如JSFIDLE清楚地显示的那样。@Felix Kling:我传递到这个函数中的显示我的div的函数不起作用。如果我传递一些简单的东西,比如警报,我会看到警报弹出窗口。如果我有我的div show在$(document).ready()区域中单独调用函数,它会显示我的div。但是将div show函数传递到上面的示例中并不会显示div。再次遍历函数时,会调用我的divShow函数,但在DOM完成加载之前会调用它(使div显示返回null)。因为这个通用表单函数存在于一个单独的js文件中,这会影响ready事件的触发时间吗?@Jeremy:正如我所说的,如果你不发布代码,我们帮不了你多少忙。显然你没有正确地传递函数,你调用它太早了。确保你没有在必须传递它的地方调用函数。
ready
事件将始终在源代码完全解析时触发。只需确保在调用/传递函数之前包含该文件即可。