W3Schools的另一个有问题的jQuery Quiz答案

|| W3Schools网站上发布了一个jQuery测验... http://www.w3schools.com/quiztest/quiztest.asp?qtest=jQuery 问题#16如下, 在完成文档加载之前,使用哪个jQuery函数阻止代码运行? A。$(文档).load() B。$(文档).ready() C。$ {body).onload() 我选择答案A弄错了(他们的官方答案是B。) 我回答了,以为我知道以下内容, 页面上的所有内容(包括所有图像)加载后都会触发document.load 仅在加载DOM之后(并非所有图像都已加载)才触发document.ready 我解释了原始问题的措辞“文档已完成加载”,以包括所有内容(包括所有图像)。毕竟,我认为这就是为什么他们将其称为“ document.load \”。同样,为了使他们的答案正确,您必须得出以下结论:\“ DOM \”等效于\“ document \”。这似乎不对,否则为什么将其称为“文档对象模型”(DOM)而不是仅称为“文档”? 尽管W3School声称B是正确答案,但实际上什么是正确答案? 谢谢你的想法。 旁注:在其他相关问题中引用我自己的评论... \“我实际上在jQuery网站上学习了我的大多数jQuery,当我遇到问题时,可以在这里进行搜索。我主要在W3School进行测验,因为我正在研究他们的jQuery认证“必备条件”。不要以为自己是jQuery专家,但在他们的测验中我很容易就获得了95%(19/20)的分数。看到答案中的措辞不当,我想通过在这里发布来确认已经怀疑的内容。对这类认证的看法正在转变。” 编辑: 我通知W3Schools这个线程的存在。 编辑2: 当我回答最初的测验问题时,我想到的是$(window).load(),因此我的测验答案显然是错误的。我相信这个事实不会把三个选择题作为正确答案。请参阅下面的详细答案。
已邀请:
这个问题是模棱两可的。 正确答案取决于您对文档的定义。如果是DOM,则为B。如果是整个页面的资产,则为
$(window).load(function() { ... })
。 如您所见,此测验很糟糕。
从jQuery API文档中... 。准备() 说明:指定一个功能 在DOM完全执行时执行 已加载。虽然JavaScript提供了 当一个 页面呈现,此事件不 触发直到所有资产 图像已被完全接收。 在大多数情况下,脚本可以运行 在DOM层次结构完全构建之后。 有关jQuery Ready的更多信息 从W3C定义DOM ... 什么是文档对象模型? 文档对象模型是 平台和语言无关 允许程序和 脚本以动态访问和 更新内容,结构和 文件样式。 从jQuery API文档中定义.load() 。加载() 说明:将事件处理程序绑定到\“ load \” JavaScript事件。 示例:页面完全加载后运行一个函数,包括 图形。 $(window).load(function(){
 // run code 
}); 经过研究和深思熟虑,我得出的结论是,鉴于他们的三个选择,问题的措词是不正确的。当然,基于这种思路,由于对测验问题没有正确答案,所以我原来的答案也是错误的。 最初的W3Schools jQuery测验问题: 哪个jQuery函数用于 防止代码在 文件加载完毕? 现在,让我们分析原始的三个答案: A。$(文档).load() 这是我最初的答案,但是在StackOverflow上发布此问题后,据我所知,意识到$(document).load()不是有效的代码。 $(window).load()是我最初的想法。使用$(window).load(),您可以防止代码在整个窗口(包括其所有元素,图像等)加载之前执行。 A不能是正确的答案,因为措辞是\“ document.load \”,尽管应该是\“ window.load \”。 B。$(文档).ready() 这是官方答案,并且是有效的jQuery代码。它在DOM准备就绪时但在其他任何内容完成加载之前触发。我认为您不能说\“ document \”已经完成加载,否则单词\“ document \”和\“ DOM \”将具有相同的含义并且可以互换。 B不能是正确的答案,因为没有图像和其他资产,页面(文档)尚未完成加载。 C。$ {body).onload() 仅仅因为\“ onload()\”不是jQuery库的一部分,C不能是正确的答案。 结论: 正如问题的措辞所说,“哪个jQuery函数用于阻止代码在文档加载完成之前运行?”,给出的三个没有正确的答案。 $(window).load()应该是正确的答案,因为它整体上指的是\“ page \”或\“ document \”,而不仅仅是DOM。 要接受正式答案\“ $(document).ready()\”,原始问题应重写如下:\“在DOM完成加载之前,哪个jQuery函数用于阻止代码运行? \“

要回复问题请先登录注册