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

$(document).ready(function() {

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


当前回答

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

其他回答

我认为更好的方法是把开关到命名函数(检查这个溢出关于这个主题的更多信息)。 这样您就可以从单个事件中调用它们。

像这样:

function firstFunction() {
    console.log("first");
}

function secondFunction() {
    console.log("second");
}


function thirdFunction() {
    console.log("third");
}

这样就可以在一个就绪函数中加载它们。

jQuery(document).on('ready', function(){
   firstFunction();
   secondFunction();
   thirdFunction();

});

这将输出以下到您的console.log:

first
second
third

这样就可以为其他事件重用这些函数。

jQuery(window).on('resize',function(){
    secondFunction();
});

检查这小提琴的工作版本

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

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

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

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

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

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

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

您甚至可以在包含的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