javascript - 为什么这个表达式在 Firefox/Chrome 中返回 true,而在 IE 中返回 false?

标签 javascript jquery internet-explorer cross-browser

我的表单中有类似于以下的代码:

<input type="hidden" id="submitMyForm" name="submitMyForm" checked="checked" />

当我尝试在 if 语句中使用此代码时,我意识到它对于 Firefox/Chrome 返回 true,但对于 IE 返回 false:

$('#submitMyForm').prop("checked")

这是一个jsfiddle来说明。

为什么 IE 对这个表达式的解释不同?而且,从更实际的 Angular 来看,我可以使用在所有浏览器中计算结果为 true 的等效表达式是什么?

最佳答案

您的 HTML 无效(无论如何,在 HTML 5 中,早期版本的 HTML 无法在 DTD 中表达规则,但仍无法确认)。只有单选按钮和复选框可以具有 checked 属性。隐藏输入可能不会。您遇到的差异是由于浏览器尝试以不同的方式从 HTML 中的错误中恢复。

明智的方法是根本不使用带有选中属性的隐藏输入。

也许您可以使用data-checked 属性来代替。然后使用 .data('checked') 访问它。

您还可以继续使用损坏的 HTML 并检查属性本身(而不是从中生成的属性):

alert($('#submitMyForm').attr("checked"));

关于javascript - 为什么这个表达式在 Firefox/Chrome 中返回 true,而在 IE 中返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086932/

相关文章:

javascript - JS中 "Use Strict"的好处

html - 奇怪的 CSS 问题,内容单元在 IE 中移动到页面底部 - 在 Chrome 和 Firefox 中工作正常

Java覆盖现有的类方法

javascript - 视觉 : How to display each "leaf" of an array of nested objects in a table?

javascript - 如何使用 Discordie 一次连接到多个语音连接

jquery - 如何让 panelSnap 插件与包装器内的元素一起使用

javascript - 对齐父项下的下拉列表内容

javascript - XDomainRequest可以用来加载和绘制图像吗?

javascript - 仿谷歌地图mapTypeControl自定义控件

javascript - 如何从用户脚本访问 jQuery 页面?