$(document).ready在外部函数内调用?

Moe*_*sko 5 jquery

我在网上看到了一些jquery代码,采用了这种形式:

<script>            
function doSomething(message)
{   
    $(document).ready(function(){       
        alert(message);
        });
};
</script>
Run Code Online (Sandbox Code Playgroud)

即一个外部函数("doSomething"),里面有$(document).ready.我很困惑,因为当加载DOM时,不是$(document).ready下的代码?就像在函数内部有一个事件处理程序(?).这种形式的代码对任何人都有意义吗?谢谢.

Gol*_*rol 8

这说得通.$(document).ready注册在DOM完全加载时触发的事件处理程序.传递给它的匿名函数就是那个处理程序.如果在加载DOM后注册该处理程序,则会立即触发它.

Javascript可以在DOM完全加载之前执行,所以这个函数做的是,它实际上注册了在加载DOM之前不显示的消息.如果您不希望在DOM完全加载之前显示消息,则可以使用此构造.


T.J*_*der 4

这可能是原始编码器的错误。您可以这样做,但您希望doSomething尽早打电话。请注意,如果在调用 时 DOM 已经准备好ready,jQuery 将调用代码,因此无论哪种方式都会发生,但直到某人在某处调用 时才会发生doSomething。我看不出该模式有多大用途,因此除非您有一些强有力的论据来使用它 - 并且考虑到这个问题,我怀疑您没有:-) - 您可以安全地忽略它。

  • @iLLin:我认为这是一个完全合理的用例。因此,您可以使用文档中非常高的位置(我认为在“head”中)的脚本触发ajax请求,并在成功回调中使用“ready”。完全合理。我不确定 ajax 请求会比将脚本放在 `body` 标记的底部(然后您不必为 `ready` 烦恼)更快发生,但是没有让浏览器尽早知道你想要它做什么是有害的。 (2认同)