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

时间:2011-05-17 07:00:16

标签: jquery

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

<script>            
function doSomething(message)
{   
    $(document).ready(function(){       
        alert(message);
        });
};
</script>

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

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:4)

这可能是原始编码器的一个错误。你可以这样做,但你想早点打电话给doSomething。请注意,如果在调用ready时DOM已经准备就绪,jQuery将调用代码,因此它将以任何一种方式发生,但只有某人在某处调用doSomething时才会发生。我看不出这个模式的目的很多,所以除非你有一些强有力的论据来使用它 - 并且考虑到这个问题,我怀疑你没有:-) - 你可以放心地忽略它。

答案 2 :(得分:3)

  

这种形式的代码对任何人都有意义吗?

不,它没有。

答案 3 :(得分:1)

(文档)$。就绪();实质上是在DOM准备好时注册要执行的函数。但是在这种情况下,程序员已经在函数中嵌套了这个。这意味着在调用doSomething()函数之前,它不会被添加到.ready();

您可以尝试使用以下内容:

<script type="text/javascript">
    function doSomething(){
        $(document).ready(function(){
            alert('here');

        });
    }
    doSomething();
</script>

将其放在HTML的各个部分并检查出来(:

干杯!