Jquery函数,误解。需要说明

时间:2012-09-07 12:55:13

标签: jquery function

我已经看过非常多的教程,在演示中,我看到这样的东西:

// my dummy example
$(function() {
    $('a.change').bind('click',function(event){
        $('body').css('background','#27272')
    });
});

我不明白$(function() {正在做什么以及它为什么不起作用?如何在不破坏其他代码的情况下使其正常工作?

4 个答案:

答案 0 :(得分:4)

$(function() {})$(document).ready(handler)的短代码,可以找到更多信息here

您发布的代码不应该破坏任何内容。也许你可以提供一个我们可以调查的jsfiddle。

答案 1 :(得分:3)

$(function() {$(document).ready(function() { ... });的快捷方式。后一版本更具可读性。这意味着当document对象触发它的ready事件时,您在大括号之间放置的代码将被执行。

这会破坏任何内容的唯一真正原因是,如果您已将此代码放在页面中而未先包含jquery.js,或者您将其放在错误的位置。

答案 2 :(得分:2)

在官方文档中记录了它:http://api.jquery.com/jQuery/#jQuery3

  

jQuery(callback)DOM准备就绪时执行的函数。

所以,基本上,一旦DOM被加载并准备搞砸就会调用回调函数。如果您没有使用它,则节点可能不可用,尤其是在HTML树顶部的脚本中。

答案 3 :(得分:1)

好的,我觉得你对匿名功能感到困惑。一个匿名函数 - 就像任何其他函数一样,只是没有名字。它通常作为另一个函数的参数创建:

$('body').fadeIn('1000',function() {
    alert('yay!');
});

一次性使用(因此不能用于函数名称)。

我怀疑它不适合你,因为它不是作为有效参数传递的。 $,我怀疑是jQuery对象,通常需要另一个jQuery对象或字符串作为参数,而不是匿名函数(除非它返回有意义的东西)。但是,bind的参数创建正常。

现在,您可能想要做的是创建一个自调用匿名函数。在这种情况下,语法也可能是:

(function($) {
    $('a.change').bind('click',function(event){
        $('body').css('background','#27272')
    });
})(jQuery);

这会创建一个匿名函数然后执行它(括号中最后一个参数)。

[编辑]

哦,我很抱歉提供了一个误导性的信息,让我澄清一下:你使用的语法也是有效的,因为jQuery对象将在加载DOM后执行其中包含的函数(回调)。所以它实际上是有效的语法。