有时我创建一个函数,然后再调用它。
例子:
function example { alert('example'); }
example(); // <-- Then call it later
不知何故,有些函数不能被调用。我必须在里面调用这些函数:
$(function() { });
$(function() {});And (function() {});意思是,它们的区别/目的是什么?
有时我创建一个函数,然后再调用它。
例子:
function example { alert('example'); }
example(); // <-- Then call it later
不知何故,有些函数不能被调用。我必须在里面调用这些函数:
$(function() { });
$(function() {});And (function() {});意思是,它们的区别/目的是什么?
当前回答
$(function() { ... });
只是jQuery的简写
$(document).ready(function() { ... });
它的设计目的是确保一旦页面的所有DOM元素准备就绪,函数就会被调用。
然而,我不认为这是你的问题-你能澄清你的意思是'某种程度上,一些函数不能被调用,我必须调用这些函数内部'吗? 也许可以发布一些代码来显示什么没有按预期工作?
编辑:重新阅读你的问题,这可能是你的函数在页面加载完成之前运行,因此不会正确执行;将它放在$(function)中确实可以解决这个问题!
其他回答
它只是$(document).ready()的缩写,如下所示:
$(document).ready(function() {
YOUR_CODE_HERE
});
有时您必须使用它,因为您的函数在DOM完成加载之前正在运行。
一切都在这里解释:http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
一些理论
$是一个函数的名称,就像你给函数的任何其他名称一样。任何人都可以在JavaScript中创建一个函数,并将其命名为$,如下所示:
$ = function() {
alert('I am in the $ function');
}
JQuery是一个非常著名的JavaScript库,他们决定将整个框架放在一个名为JQuery的函数中。为了让人们更容易使用框架,并减少每次调用函数时都要输入整个jQuery,他们还为它创建了一个别名。这个别名是$。因此$是一个函数的名字。在jQuery源代码中,你可以自己看到:
window.jQuery = window.$ = jQuery;
回答你的问题
那么什么是$(function() {});?
现在您知道$是函数的名称,如果您使用jQuery库,那么您将调用名为$的函数并将参数function(){}传递给它。jQuery库将在适当的时候调用该函数。什么时候合适呢?根据jQuery文档,适当的时间是页面的所有DOM元素都准备好可以使用之后。
另一种实现方法是这样的:
$(document).ready(function() { });
正如你所看到的,这更冗长,所以人们更喜欢$(function() {})
一些函数不能被调用的原因,正如你所注意到的,是因为这些函数还不存在。换句话说,DOM还没有加载。但如果将它们放在作为参数传递给$的函数中,DOM将在那时加载。这样,函数就创建好了,可以使用了。
另一种解释$(function(){})的方法如下:
嘿$或jQuery,你能调用这个函数我传递作为参数一旦DOM加载?
这是$(document).ready()的快捷方式,它在浏览器完成加载页面时执行(这里的意思是“当DOM可用时”)。见http://www.learningjquery.com/2006/09/introducing-document-ready。如果您试图在浏览器完成加载页面之前调用example(),它可能无法工作。
下面是一个jQuery函数调用:
$(...);
这是“jQuery函数”。$是一个函数,$(…)是你调用的那个函数。
您提供的第一个参数如下:
function() {}
参数是您指定的函数,$函数将在DOM完成加载时调用所提供的方法。
$(function() { ... });
只是jQuery的简写
$(document).ready(function() { ... });
它的设计目的是确保一旦页面的所有DOM元素准备就绪,函数就会被调用。
然而,我不认为这是你的问题-你能澄清你的意思是'某种程度上,一些函数不能被调用,我必须调用这些函数内部'吗? 也许可以发布一些代码来显示什么没有按预期工作?
编辑:重新阅读你的问题,这可能是你的函数在页面加载完成之前运行,因此不会正确执行;将它放在$(function)中确实可以解决这个问题!