如果我在启动时有很多函数,它们都必须在一个单一的:

$(document).ready(function() {

或者我可以有多个这样的声明?


当前回答

是的,这是可能的,但你可以更好地使用一个div #mydiv和使用两者

$(document).ready(function(){});

//and

$("#mydiv").ready(function(){});

其他回答

是的,你可以。

如果您有其他模块使用同一个页面,那么多个文档就绪部分将特别有用。用旧窗户。Onload =func声明,每次指定要调用的函数时,它都会替换旧的函数。

现在,所有指定的函数都被排队/堆叠(有人能确认吗?),而不管它们是在哪个文档准备部分中指定的。

你可以使用multiple。但是您也可以在一个文档中使用多个函数。准备好了:

$(document).ready(function() {
    // Jquery
    $('.hide').hide();
    $('.test').each(function() {
       $(this).fadeIn();
    });

    // Reqular JS
    function test(word) {
       alert(word);
    }
    test('hello!');
});

是的,完全没问题。但是要避免没有理由就这么做。例如,当我的javascript文件动态生成时,我使用它来声明全局站点规则,而不是单独的页面,但如果你只是不断地这样做,它会使它难以阅读。

另外,您不能从另一个方法访问某些方法 jQuery(函数(){});调用 这是你不想这么做的另一个原因。

用旧窗户。Onload,但你将替换旧的每次你指定一个函数。

这是合法的,但有时会导致不良行为。作为一个例子,我使用MagicSuggest库,并在我的项目的一个页面中添加了两个MagicSuggest输入,并为每个输入的初始化使用了单独的文档就绪函数。第一个输入初始化成功了,但第二个没有,也没有给出任何错误,第二个输入没有显示。所以,我总是建议使用一个文档准备函数。

您甚至可以在包含的html文件中嵌套文档就绪函数。下面是一个使用jquery的例子:

文件:test_main.html

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="jquery-1.10.2.min.js"></script>
</head>

<body>
    <div id="main-container">
        <h1>test_main.html</h1>
    </div>

<script>
    $(document).ready( function()
    {
        console.log( 'test_main.html READY' );
        $("#main-container").load("test_embed.html");
    } );
</script>

</body>
</html>

文件:test_embed.html

<h1>test_embed.html</h1>
<script>
    $(document).ready( function()
    {
        console.log( 'test_embed.html READY' );
    } );
</script>

控制台输出:

test_main.html READY                       test_main.html:15
test_embed.html READY                      (program):4

浏览器显示:

test_embed.html