0

我看过很多教程,在演示中我看到了这样的内容:

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

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

4

4 回答 4

4

$(function() {})$(document).ready(handler)更多信息的简码可以在这里找到

您发布的代码不应该破坏任何东西。也许您可以提供一个 jsfiddle 供我们研究。

于 2012-09-07T13:01:07.313 回答
3

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

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

于 2012-09-07T12:59:37.980 回答
2

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

jQuery( callback ) 当 DOM 准备好时执行的函数。

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

于 2012-09-07T13:00:05.317 回答
1

好的,我认为您对匿名函数感到困惑。一个匿名函数——和其他函数一样,只是没有名字。它通常作为另一个函数的参数创建:

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

它是一次性使用的(所以没有使用函数名)。

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

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

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

这将创建一个匿名函数,然后执行它(括号最后带有一个参数)。

[编辑]

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

于 2012-09-07T13:03:31.713 回答