为什么我们在$(function(){...............})中包含一堆语句;在jquery

时间:2012-08-02 14:51:02

标签: javascript jquery jquery-ui

所以我在jquery-ui文档中看到了这段代码,我想知道为什么所有的语句都包含在$(function() {...});

jquery文档说$()增强了它中的对象,但我不明白为什么我们需要它。它是一种惯例还是实际上有意义?

<script>
$(function() {
    $( "#draggable" ).draggable();
    $( "#droppable" ).droppable({
        drop: function( event, ui ) {
            $( this )
                .addClass( "ui-state-highlight" )
                .find( "p" )
                    .html( "Dropped!" );
        }
    });
});
</script>

3 个答案:

答案 0 :(得分:5)

对于所有意图和目的,

$(function() {});$(document).ready(function() {});相同;虽然我相信在文件准备好之前会稍微调用它。

它的作用是在文档创建完成后调用函数中的代码。这就是在函数加载时创建的所有DOM树。这允许您在知道那些对象将在那时创建时安全地操作DOM。

以下是一个例子:

<script>
//This code is called straight away, your DOM hierarchy may not
//be complete and the object #draggable may not have been created yet,
//as such draggable() may not work properly.
$( "#draggable" ).draggable();

//This code is called once the DOM tree is complete,
//as such you know all your objects have been created
$(function() {
    $( "#draggable" ).draggable();
    $( "#droppable" ).droppable({
        drop: function( event, ui ) {
            $( this )
                .addClass( "ui-state-highlight" )
                .find( "p" )
                    .html( "Dropped!" );
        }
    });
});
</script>

有关更详尽的说明,请参阅jQuery documentation

答案 1 :(得分:3)

这是$(document).ready(function() {})

的简写

一旦整个文档被加载就会执行,而不是在解析过程中遇到它时执行。

答案 2 :(得分:2)

它还为其'语句块中的项创建了一个上下文,这和它一样重要 $(document).ready(function(){}),document ready。