javascript – 为什么不推荐“$()。ready(handler)”?

jQuery API docs site为准备

All three of the following syntaxes are equivalent:

  • $(document).ready(handler)
  • $().ready(handler) (this is not recommended)
  • $(handler)

做作业后 – 阅读和玩source code,我不知道为什么

$().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: function( fn ) {
    // Attach the listeners
    jQuery.bindReady();
        // Add the callback
    readyList.add( fn );
        return this;
},

如你所见,它只是将回调添加到内部队列(readyList),并且不更改或使用集合中的元素。这允许你调用每个jQuery对象的ready函数。

喜欢:

> regular selector:$(‘a’)。ready(handler)DEMO
>废话选择器:$(‘fdhjhjkdafdsjkjriohfjdnfj’)。ready(handler)DEMO
>未定义的选择器:$()。ready(handler)DEMO

最后…到我的问题:为什么$()。ready(handler)不推荐?

我得到了一个jQuery开发人员的官方答复:

$()。ready(fn)只能工作,因为$()过去是$(document)的快捷方式(jQuery< 1.4)
所以$()。ready(fn)是一个可读的代码。

但人们曾经做过像$(),mouseover()和其他各种各样的疯狂。
和人们不得不做$([])得到一个空的jQuery对象

所以在1.4中我们改变它,所以$()给出一个空的jQuery,我们只是做了$()。ready(fn)工作,以便不打破很多代码

$()。ready(fn)现在只是修补在核心,使其正常工作的遗留情况。

ready函数的最佳位置是$ .ready(fn),但它是一个真正老的设计决策,这是我们现在的。

我问他(过去式:

Do you think that $(fn) is more readable than $().ready(fn) ?!

他的答案是:

I always do $(document).ready(fn) in actual apps and typically there’s only one doc ready block in the app it’s not exactly like a maintenance thing.

I think $(fn) is pretty unreadable too, it’s just A Thing That You Have To Know Works™

http://stackoverflow.com/questions/10753306/why-readyhandler-is-not-recommended

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 为什么不推荐“$()。ready(handler)”?