使用jQuery()替代$(document).ready()的方法?

3

个人而言,我更喜欢第一种语法。

jQuery()

关于常用的安全性问题:

$(document).ready()

对于另一个选择器,我无论如何都会使用$('#id')。我只是询问第一个.ready

7个回答

4

jQuery$是可以互换的(来自jQuery源代码):

window.jQuery = window.$ = jQuery

但是要小心其他可能也使用 $ 的库。至于使用 ready()

以下三种语法是等效的:

  • $(document).ready(handler)

  • $().ready(handler)(不建议使用)

  • $(handler)

摘自ready() API。


我知道这是逐字复制,但“不建议使用”应该真正意味着“不再支持”。 - Raynos

3
在加载jQuery脚本后,添加以下代码:
(function($){
    $.fn.oldReady = $.fn.ready;
    $.fn.ready = function(fn){
        return $.fn.oldReady( function(){ try{ if(fn) fn.apply($,arguments); } catch(e){}} );
    }
})(jQuery);

2

如果你只使用jQuery框架,我建议使用$语法,特别是ready事件处理的简写版本,因为它更加简洁。这只是个人偏好--我很快就能看出它的作用,并且不会像其他写法那样冗长。你可以选择任何其他形式。

$(function() {

});

如果您使用其他框架,则应按照说明设置jQuery的 noConflict 模式: http://api.jquery.com/jQuery.noConflict/ 引用页面中的代码示例:
<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  jQuery(document).ready(function($) {  // or jQuery(function($) {
    // Code that uses jQuery's $ can follow here.
  });
  // Code that uses other library's $ can follow here.
</script>

如果您正在开发自己的插件,并且无法确定是否仅使用jQuery框架,则应在内部使用jQuery()或至少在作用域内明确地将$分配给jQuery对象,以便您知道正在使用什么。


你是唯一一个提到可以传递参数给.ready(或其等效物)以充当jQuery变量的人。 - Explosion Pills

2

使用jQuery更加"安全",因为它不会与其他框架(如Mootools)发生冲突。如果你只使用jQuery,那么使用$也没有任何问题。


如果您不设置“noConflict”模式,那么它并不更安全。 - tvanfosson

1

两个名称$jQuery是同义词。 jQuery更加明确;如果您使用其他框架,$可能会被覆盖。

如果将函数作为调用jQuery函数(或者显然是$)的第一个参数传递,则将执行该函数完全,就像调用jQuery(document).ready一样。所以是的,它完全相同。

实际上,所有这些在功能上都是等价的(前提是没有任何其他东西干扰$):

$(document).ready(function() {});
jQuery(document).ready(function() {});
$(function() {});
jQuery(function() {});

使用哪种方式完全取决于情况和风格。

我个人偏好使用显式的$(document).ready调用(#1):这段代码将在DOM准备就绪时运行,这一点非常明显。你的偏好(#4)的主要优点是它清楚地表示这是jQuery代码,这对未来阅读你的代码的人可能很有用。


我认为更易读的是jQuery(); 我会坚持使用它。 - dynamic
jQuery(document).ready 也很好!但是可能比只有 jQuery(); 写起来更冗长。我在这里遇到的困难是因为我来自 PHP,而 $ 只用于变量而不是函数。 - dynamic

0

你的问题实际上包含了两个方面。有几种方法可以连接ready事件,但以下四种变体与你的问题相关:

jQuery(function(){ ... });

jQuery(document).ready(function(){ ... });

$(function(){ ... });

$(document).ready(function(){ ... });

$ 标识符是 jQuery 标识符的别名。使用 noConflict 方法,您可以释放 $ 别名,如果它与其他库冲突,则只使用 jQuery 标识符(甚至释放所有标识符并指定自己的标识符)。

使用 jQuery 对象本身来连接 ready 事件是一种常用的简写方式,但仅从代码中查看不太清楚它的作用。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接