Javascript 为什么$(document).on(..)可以放在页面上的任何位置,而$(";.cl";).on(..)必须放在$(document).ready callback或<;车身>;?

Javascript 为什么$(document).on(..)可以放在页面上的任何位置,而$(";.cl";).on(..)必须放在$(document).ready callback或<;车身>;?,javascript,jquery,Javascript,Jquery,标题问题说明了一切。在很大程度上,我理解后一种情况。当读取Javascript时,对DOM的引用必须具有某种意义,这就是为什么我们将其包装在$(document).ready回调中,或者将脚本放在下。我真的不明白为什么(…)上的$(document)。无论位置如何,似乎都能工作 任何输入都将是dope。当您执行$(任意)时,运行该选择器时必须存在任意对象 当您在部分时,文档对象已经存在,因为它是整个页面的主父对象。但是,主体中还不存在任何内容,因此还不存在$(“.class”),因此选择器将找不

标题问题说明了一切。在很大程度上,我理解后一种情况。当读取Javascript时,对DOM的引用必须具有某种意义,这就是为什么我们将其包装在
$(document).ready
回调中,或者将脚本放在
下。我真的不明白为什么(…)上的
$(document)。无论位置如何,
似乎都能工作

任何输入都将是dope。

当您执行
$(任意)
时,运行该选择器时必须存在任意对象

当您在
部分时,
文档
对象已经存在,因为它是整个页面的主父对象。但是,主体中还不存在任何内容,因此还不存在
$(“.class”)
,因此选择器将找不到任何内容(或者更糟糕的是,由于主体甚至还不存在而失败)

但是
$(文档)
确实存在于您可以运行脚本的最早时间(在
部分),因此
$(文档)
可以工作,并且可以附加事件处理程序

如果要在
中查找元素,例如示例
$(“.class”)
,则必须等待
部分加载类似jQuery的
.ready()
的内容(这样这些元素将在脚本运行之前存在)或者,您必须将脚本实际放置在
中的该元素之后,以便在运行脚本时已解析所需的元素


若要添加更多内容,请将委派事件处理与
.on()
一起使用,如下所示:

$(mySelector).on("click", ".myClass", fn);
然后,
$(mySelector)
中的对象是事件处理程序将直接附加到的对象,这些对象是运行此行代码时必须存在的对象。匹配
“.myClass”的对象
在运行此代码时不必存在。因此,如果通过使用以下内容附加到文档对象来执行委派事件处理:

$(document).on("click", ".myClass", fn);
然后,在运行这行代码时,只有
document
对象必须存在。因为
document
对象是首先创建的,所以当您可以运行javascript代码时,它将已经存在,因此它似乎总是可以工作的

这就提出了一个有趣的问题:是否可以将所有事件处理程序都附加到
文档
对象。如果这样做,会有一些折衷(有些事件只有直接附加到源对象时才能正常工作)因此,在不了解后果的情况下,不应该盲目地这样做。有关将所有事件附加到文档对象时的权衡的更详细的讨论,请参阅。

当您执行
$(任意)
时,运行该选择器时必须存在任意对象

当您在
部分时,
文档
对象已经存在,因为它是整个页面的主父对象。但是,正文中还没有任何内容,因此还不存在
$(“.class”)
,因此选择器将找不到任何内容(或者更糟糕的是,由于正文甚至还不存在,因此会失败)

但是
$(文档)
确实存在于您可以运行脚本的最早时间(在
部分),因此
$(文档)
可以工作,并且可以附加事件处理程序

如果要在
中查找元素,例如示例
$(“.class”)
,则必须等待
部分加载类似jQuery的
.ready()
的内容(这样这些元素将在脚本运行之前存在)或者,您必须将脚本实际放置在
中的该元素之后,以便在运行脚本时已解析所需的元素


若要添加更多内容,请将委派事件处理与
.on()
一起使用,如下所示:

$(mySelector).on("click", ".myClass", fn);
然后,
$(mySelector)
中的对象是事件处理程序将直接附加到的对象,这些对象是运行此行代码时必须存在的对象。匹配
“.myClass”的对象
在运行此代码时不必存在。因此,如果通过使用以下内容附加到文档对象来执行委派事件处理:

$(document).on("click", ".myClass", fn);
然后,在运行这行代码时,只有
document
对象必须存在。因为
document
对象是首先创建的,所以当您可以运行javascript代码时,它将已经存在,因此它似乎总是可以工作的

这就提出了一个有趣的问题:是否可以将所有事件处理程序都附加到
文档
对象。如果这样做,会有一些折衷(有些事件只有直接附加到源对象时才能正常工作)因此,在不了解后果的情况下,不应该盲目地这样做。有关将所有事件附加到文档对象时的权衡的更详细的讨论,请参阅。

当您执行
$(任意)
时,运行该选择器时必须存在任意对象

当您在
部分时,
文档
对象已经存在,因为它是整个页面的主父对象。但是,正文中还没有任何内容,因此还不存在
$(“.class”)
,因此选择器将找不到任何内容(或者更糟糕的是,由于正文甚至还不存在,因此会失败)

但是
$(文档)
确实存在于您可以运行脚本的最早时间(在
部分),因此
$(文档)
可以工作,并且可以附加事件处理程序

如果要查找
中的元素,例如示例
$(“.class”)
,则必须等待
部分