从jQuery的API文档的网站为ready
以下所有三种语法都是等效的:
- $(document).ready(handler)
- $().ready(handler)(不推荐这样做)
- $(处理程序)
做完功课-阅读和玩弄源代码后,我不知道为什么
$().ready(handler)
不推荐。第一种和第三种方式完全相同,第三种方式调用缓存的 jQuery 对象上的就绪函数document
:
rootjQuery = jQuery(document);
...
...
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
但是ready函数与选中节点元素的selector没有交互,ready
源码:
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.add( fn );
return this;
},
如您所见,它只是将回调添加到内部 queue( readyList
) 而不会更改或使用集合中的元素。这使您可以ready
在每个 jQuery 对象上调用该函数。
喜欢:
- 常规选择器:
$('a').ready(handler)
DEMO - 废话选择器:
$('fdhjhjkdafdsjkjriohfjdnfj').ready(handler)
DEMO - 未定义的选择器:
$().ready(handler)
DEMO
最后...我的问题:为什么$().ready(handler)
不推荐?