我对创建新jQuery对象的所有不同方法感到困惑。
相关文档似乎是: http://api.jquery.com/ready/ http://api.jquery.com/jQuery/
从这两个文档中,以下内容都是等效的(除了别名或没有别名'$'):
这是对的吗?我错过了吗?
答案 0 :(得分:4)
这些有点等同:
$(document).ready(handler)
- 在加载DOM时调整handler
$().ready(handler)
- 在加载DOM时运行handler
(已弃用,请勿使用)$(handler)
- 运行handler
然后加载DOM - $(document).ready(handler)
的快捷方式jQuery(function($) {})
与上面#3相同,仅使用jQuery
代替$
别名jQuery(document).ready(function($) {})
- 与第一个相同,再次使用jQuery
代替$
别名如果将$
定义为其他内容,例如原型,然后前3个将无法正常工作。最后两个类似,他们只是接受传入的第一个参数(jQuery
对象)并将其$
放入其中,即使$
是其他内容也可以这样做:
jQuery(function($) {
$("input").val("something");
});
答案 1 :(得分:3)
嗯,还有另一个。来自文档:
还有 $(document).bind(“ready”,handler)。 这与准备好的情况类似 方法,但有一个例外:如果 准备好的事件已经解雇了你 尝试.bind(“准备好”)绑定 处理程序不会被执行。
其他初始化方法将始终运行...因此您可能会发现自己在许多文件中声明$(document).ready(function() { //stuff }
,并且处理程序始终运行。
我经常使用jQuery(document).ready(function($) {})
或$(document).ready(function() {})
...我发现它们更具可读性。
另一种方法是在关闭正文标记之前调用脚本,并在其中执行类似的操作
(function($) {
//stuff
})(jQuery);
如果您需要避免使用$与其他库发生冲突。这是一个自动执行的匿名函数,它允许您在其范围内使用别名,而不必担心来自其他库的冲突。
答案 2 :(得分:0)
如果您只使用jQuery,那么$()等同于jQuery()。所以这涵盖了其中的一半。
然后,如果你使用$()而不是$(document).ready,那些是相同的。在这种情况下,它只是一个辅助函数。例如,您可能希望在其他内容上添加就绪,在这种情况下,您可以执行以下操作:$(foo).load({})
最后,我不知道你对$()的意思。准备就绪,因为你必须传递一个参数。