ready
获取的以下内容:
以下三种语法是等效的:
- $(document).ready(handler)
- $().ready(handler) (不建议使用此方法)
- $(handler)
在阅读并尝试源代码后,我不知道为什么。
$().ready(handler)
不建议使用。第一种和第三种方式是完全相同的,第三种选项在一个已缓存的 jQuery 对象上使用了 document
调用了 ready 函数:
rootjQuery = jQuery(document);
...
...
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
但是ready
函数与所选节点元素的选择器没有交互。下面是ready
的源代码:
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.add( fn );
return this;
},
正如您所看到的,它只是将回调函数添加到内部队列(readyList
)中,并不会更改或使用集合中的元素。这使您可以在每个jQuery对象上调用ready
函数。
例如:
- 常规选择器:
$('a').ready(handler)
演示 - 无意义选择器:
$('fdhjhjkdafdsjkjriohfjdnfj').ready(handler)
演示 - 未定义选择器:
$().ready(handler)
演示
最后... 我的问题是:为什么不推荐使用$().ready(handler)
?
$.ready
),而不需要首先构造一个jQuery对象。 - Esailija.ready()
功能,否则构造jQuery对象是没有必要的。 - user1106925$.ready
已经被内部jQuery函数占用了,搜索源代码寻找ready:
。 - gdoron