这些jQuery就绪函数之间有什么区别?

这些jQuery就绪函数之间有什么区别?,jquery,Jquery,两者的区别是什么 $(function(){ }); 及 此函数的行为与 $(document).ready(),因为它应该 用于包装其他$() 您可以在以下列表中看到这一点: $(function(){})是dom就绪的捷径 作为参数传递给jQuery构造函数的函数绑定到文档就绪事件。我使用$(function(){})因为它比较短。据我所知,这两种方法没有区别。两者都是等效的,第一种是速记形式。它们实际上是相同的。没有区别 这是土生土长的方式 $(document).ready(f

两者的区别是什么

$(function(){

}); 

此函数的行为与 $(document).ready(),因为它应该 用于包装其他$()

您可以在以下列表中看到这一点:

$(function(){})是dom就绪的捷径


作为参数传递给jQuery构造函数的函数绑定到文档就绪事件。

我使用
$(function(){})因为它比较短。据我所知,这两种方法没有区别。

两者都是等效的,第一种是速记形式。

它们实际上是相同的。没有区别


这是土生土长的方式

$(document).ready(function() {
    // code
});
这是前一个的简写

$(function() {
    // code
});

调用
$(document).ready(选择器)
可以保存一些if语句

尽管jQuery确实在内部缓存
$(文档)
,这可能会使
$(f)
更快

我建议你读一读。如你所见

以下三种语法都是等效的:

$(文档).ready(处理程序)

$().ready(处理程序)(不建议这样做)

$(处理程序)


所以这取决于你自己和你喜欢什么。

两者完全相同:使用你喜欢的任何形式


也就是说,我个人总是使用扩展的表单
$(document).ready(function(){})原因很简单,代码的作用是显而易见的。近似的想法是“自我记录代码”。任何稍后访问代码的人都会立即看到代码将在
文档
就绪
事件上运行。使用简写形式,您必须依靠代码的读者理解其含义。

我们遇到了IE9不在$(function(){})内运行函数的情况;以与$(document).ready(function(){})相同的方式或计时

这一问题在从查询字符串中读取信息,并在屏幕上处理和显示该信息,或使用该信息处理表单时特别突出。IE9将在使用$(function())缓存信息并由用户刷新页面后处理该信息。但在第一次运行时,任何操作都不正常。然而,一旦我们从$(function(){});切换到$(document).ready(),问题就得到了解决。我们没有做任何其他更改



我非常期待有一天我不必测试IE9和更低版本。

none。或者至少手册中这么说。你可以将第一个读作“调用一个名为$的函数并将定义好的函数交给它执行”。$这里指的是jQuery,它将在准备好后执行你给它的函数。第二个读作“从文档中创建一个jQuery对象,并向其附加一个eventlistener,当它被就绪事件触发时,该对象将执行您提供给它的函数”。请参见下面的回答:IE9对它们的处理方式不同。可能重复的情况不同,$(function(){})可读性较差(至少对我的大脑而言).同意Rosdi的观点-一个更能表达它的实际功能,另一个更简洁。我更喜欢表达型版本,虽然它的性能稍差:也与一个观察结果一致:正是因为速记版缺乏表达能力,这才成为一个如此受欢迎的问题。关于jQuery3.0中,仅推荐使用
$(function(){})
语法;其他语法仍然有效,但已被弃用。请看,我不同意,存在差异。我在使用和不使用
(文档)的情况下尝试了完全相同的函数.ready
在函数前面,with,async正确加载函数变量。with,仅加载变量的初始值,而不提供新的async值。这似乎会影响计时,至少在
opera上是这样。您确定吗?第一个是否等待DOM加载?酷,只是想确定一下。+1
$().ready()
在jQuery 1.4+中不起作用。
$()
在这种情况下会返回一个空选择,而不是文档。@lonesomeday这就是为什么会有一个(不建议这样做)在前面,如果我们说的是微优化的级别,您可能需要考虑传输显式版本所需的额外11字节……@ LooMord一天,它只有9字节。<代码> $(d)。准备好(f)<代码> VS <代码> $(f)
没错,但请注意,我上面的评论有点幽默!@Raynos,但是你需要把
var d=document;
放在顶部或者放在
里面(函数(d){
})(document);
:P@Nyuszika7H任何缩小的代码都已经有
d=document,w=window
此线程上有一条注释--使用速记可能导致
TypeError:“undefined”不是一个函数,偶尔会出现
错误。@crmpicco除非该线程提到
$(document)
,所以您可能指的是
$
jQuery
.document.ready的缩写,它并没有连接到所有浏览器的同一个“本机”事件……您可以获得以下选项之一:[document.DOMContentLoaded]或[window.load]或[document.onreadystatechange]。我想这就是为什么您在IE中获得不同操作的原因(未经验证,$(document).ready(…)未连接到与$(function(){})相同的本机DOM事件。我在
opera
上也遇到过这种情况。我对您的答案进行了投票,因为我遇到了完全相同的问题。(使用jquery 3.5)
$(document).ready(function() {
    // code
});
$(function() {
    // code
});
} else if (jQuery.isFunction(selector)) {
    return rootjQuery.ready(selector);
}