我在网上看到了一些jquery代码,采用了这种形式:
<script>
function doSomething(message)
{
$(document).ready(function(){
alert(message);
});
};
</script>
即。一个外部函数(“doSomething”),里面有$(document).ready。我很困惑,因为当加载DOM时,不是$(document).ready下的代码?就像在函数内部有一个事件处理程序(?)。这种形式的代码对任何人都有意义吗?感谢。
答案 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的各个部分并检查出来(:
干杯!