$(function(){})是什么?做?


207

有时我会创建一个函数,稍后再调用该函数。

例:

function example { alert('example'); }
example(); // <-- Then call it later

不知何故,某些功能无法调用。我必须在内部调用这些函数:

$(function() { });

做什么$(function() {});(function() { });意味着,什么是这些区别/目的是什么?

Answers:


306
$(function() { ... });

只是jQuery的简写

$(document).ready(function() { ... });

它的设计目的(除其他事项外)是确保一旦页面的所有DOM元素准备就绪即可使用您的函数。

但是,我不认为这是您遇到的问题-您能否弄清楚“以某种方式,某些函数无法调用,而我必须在内部调用这些函数”的意思吗?也许发布一些代码来显示什么无法正常工作?

编辑:重新阅读您的问题,可能是您的函数在页面加载完成之前正在运行,因此无法正确执行;将其放入$(function)确实可以解决该问题!


2
如果$(function(){})会怎样?已经在$(document).ready()中?
jwchang 2011年

虽然它已经在$(文件)准备的功能不无$工作(函数()()
jwchang

好问题!我相信它应该可以正常工作,因为jQuery知道您来对地方了,但这肯定是多余的。如果您在.ready()内部,则可以正常调用函数。如果它不起作用,请发布一个示例,甚至更好-尝试用jsfiddle.net来制作小提琴。
拉斯克拉克,

4
@JeongWooChang这样做吧(function () { ... })();。您必须添加()才能调用您的函数。
西姆·维达斯

3
“有经验的开发有时使用简写$()$( document ).ready()。如果你正在编写代码,谁不使用jQuery经验的人可能会看到,最好使用长表”。- learn.jquery.com
thdoan

15

以下是jQuery函数调用:

$(...);

这就是“ jQuery函数”。$是一个函数,并且$(...)您正在调用该函数。

您提供的第一个参数如下:

function() {}

该参数是您指定的$函数,并且在DOM完成加载后,该函数将调用提供的方法。



5

我认为您可能将Javascript与jQuery方法混淆了。香草或纯Javascript类似于:

function example() {
}

这种性质的功能可以随时随地调用。

jQuery(基于Javascript的库)具有内置的函数,这些函数通常要求在调用DOM之前完全渲染它。完成此操作的语法为:

$(document).ready(function() {
});

因此,通常在该方法中调用jQuery函数,该函数通常以$或前缀jQuery

$(document).ready(function() {        
    // Assign all list items on the page to be the  color red.  
    //      This does not work until AFTER the entire DOM is "ready", hence the $(document).ready()
    $('li').css('color', 'red');   
});

该块的伪代码为:

$(document)准备好文档对象模型后.ready(),调用以下函数function() { }。在该函数中,检查<li>页面上的所有内容,$('li')然后使用jQuery方法.CSS()将CSS属性“ color”设置为值“ red”.css('color', 'red');


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.