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



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

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

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

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

这里有一个jsfiddle来说明。

为什么 IE 对此表达式的解释不同?而且,在更实际的注释中,我可以使用什么等效表达式在所有浏览器中评估为 true?

你的 HTML

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

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

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

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

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

最新更新