来自jQuery API 文档站点ready
以下所有三种语法都是等效的:
- $(文档).ready(处理程序)
- $().ready(handler) (不推荐)
- $(处理程序)
做完功课阅读和玩源代码后,我不知道为什么
$().ready(handler)
不推荐。第一种和第三种方式完全相同,第三种方式在缓存的 jQuery 对象上调用 ready 函数document
:
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
)中,而不会更改或使用集合中的元素。这使您可以ready
在每个 jQuery 对象上调用该函数。
像:
- 常规选择器:
$('a').ready(handler)
DEMO - 废话选择器:
$('fdhjhjkdafdsjkjriohfjdnfj').ready(handler)
DEMO - 未定义的选择器:
$().ready(handler)
DEMO
最后......我的问题:为什么$().ready(handler)
不推荐?