我已经看过非常多的教程,在演示中,我看到这样的东西:
// my dummy example
$(function() {
$('a.change').bind('click',function(event){
$('body').css('background','#27272')
});
});
我不明白$(function() {
正在做什么以及它为什么不起作用?如何在不破坏其他代码的情况下使其正常工作?
答案 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后执行其中包含的函数(回调)。所以它实际上是有效的语法。