javascript - 为什么访问不存在的 DOM 元素时没有错误?

标签 javascript jquery

我有一些带有部分 View 的 div。为什么对不存在的 div 的引用不会显示某种错误?例如,我现在只有一个taskN div:

<div id="task1">
    @Html.Partial("~/Views/PartialViews/TaskDosCommand.cshtml")
</div>

这是我用来显示 div 的 jQuery:

$('#task' + task.PrestoTaskType).show();

task.PrestoTaskType为1时,task1 div正确显示。但是,当 task.PrestoTaskType 不是 1(例如 2)时,则不会显示任何内容(这很好),但不会出现错误;网页上没有显示任何错误,Chrome 开发者工具控制台中也没有显示任何内容:

enter image description here

访问不存在的 DOM 元素时是否应该显示某种错误?

最佳答案

不,因为 jQuery 所做的是 .show() jQuery 对象包装的所有元素。如果根本没有元素,那就这样吧。

这正是 jQuery 类似 monad 的方面,这使得它如此有用:想象一下,如果事情不能那样工作,您必须编写代码:

var $whatever = $(...);
if ($whatever.length) $.doSomething();

这简直更糟糕:您需要引入一个变量(为了避免浪费)一个条件...到底可以获得什么 yield ?

如果您想要查看 jQuery 匹配的内容,您可以使用上面的 .length 轻松实现,也许还可以使用 .filter过程。

关于javascript - 为什么访问不存在的 DOM 元素时没有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210035/

相关文章:

javascript - 在 Backbone View 中使用 jQuery 设置 contenteditable 样式

javascript - 如何声明html标签的嵌套变量?

javascript - Jquery文件包含问题

javascript - 表 : click in row then show me the column id

jquery - 如何在动画时查看元素的宽度?

javascript - onclick 和 $("#abc").click(function(){}) 的优先级,哪个优先级更高?

javascript - 处理字符串中存在的 ASCII 代码

javascript - 为什么 JavaScript 循环不会溢出堆栈?

javascript - 查找相对于元素的鼠标位置

javascript - 显示/隐藏 Highchart 内容