6

我对创建新 jQuery 对象的所有不同方法有点困惑。

相关文档似乎是: http://api.jquery.com/ready/ http://api.jquery.com/jQuery/

从这两个文档中,以下都是等效的(除了别名或不别名'$'):

  • $(文档).ready(处理程序)
  • $().ready(处理程序)
  • $(处理程序)
  • jQuery(函数($) {});
  • jQuery(文档).ready(函数($) {});

那是对的吗?我错过了吗?

4

3 回答 3

4

这些有点等价:

  • $(document).ready(handler)-handler调整 DOM 加载的时间
  • $().ready(handler)- 在handler加载 DOM 时运行(不推荐使用,不要使用)
  • $(handler)- 运行handler然后加载 DOM - 快捷方式$(document).ready(handler)
  • jQuery(function($) {})与上面的#3 相同,只是使用jQuery而不是$别名
  • jQuery(document).ready(function($) {})- 与第一个相同,再次使用jQuery而不是$别名

如果$被定义为其他东西,例如原型,那么前 3 个将不起作用。最后两个类似,它们只是接受传入(jQuery对象)的第一个参数并将其$放入内部,即使在其他情况下也可以这样做$

jQuery(function($) {
  $("input").val("something");
});
于 2010-11-09T23:34:12.620 回答
3

嗯,还有一个。从文档:

还有 $(document).bind("ready", handler)。这与 ready 方法的行为类似,
但有一个例外:如果 ready 事件已经触发并且您尝试 .bind("ready") 绑定的处理程序将不会被执行。

其他初始化方法将始终运行......因此您可能会发现自己$(document).ready(function() { //stuff }在许多文件中声明,并且处理程序始终运行。

我会选择jQuery(document).ready(function($) {})$(document).ready(function() {})经常选择...我发现它们更具可读性。

另一种方法是在结束正文标记之前调用一个脚本,并在其中执行类似的操作,

(function($) {
    //stuff
})(jQuery);

if you need to avoid conflicts with other libraries using $. This is a self-executing anonymous function and it lets you use the alias in its scope without fear of conflicts from other libraries.

于 2010-11-09T23:43:52.230 回答
0

好吧,如果你只使用 jQuery,那么 $() 就等同于 jQuery()。所以这涵盖了其中的一半。

然后,如果您使用 $() 而不是 $(document).ready,则它们是相同的。在这种情况下,它只是一个辅助函数。例如,您可能希望在其他东西上添加 ready ,在这种情况下,您会这样做: $(foo).load({})

最后,我不知道你所说的 $().ready 是什么意思,因为你必须传递一个参数。

于 2010-11-09T23:34:05.167 回答