javascript - 为什么 jQuery .html(string) 将 type 属性移到输入的末尾?

标签 javascript jquery html

我有一个包含三个不同输入的表单;两份文本和一份提交。该表单的 html 存储在 javaScript 变量 var form 中。当用户单击按钮时,将执行以下代码:

$('#content').html(form);

这按预期工作。然后,当用户再次单击该按钮时,它会将 #content 元素的 html 与 var form 进行比较。您可能期望它返回 true,因为我刚刚将元素设置为包含表单的内容,但它返回 false。

我发现,当我从 #content 元素检索 html 时,它与插入它时略有不同。对于每个输入标记,type 属性从开头移动到结尾。即:

<input type="text"... /> --> <input ...type="text" />

所以当我尝试比较它们时,它返回 false,这是可以理解的。然而,这就引出了一个问题:为什么它没有完全按照变量中的方式插入 html?

最佳答案

这可能不是由 jQuery 造成的;这是浏览器。一旦 text/html 转换为 DOM 节点,将这些节点转换回文本取决于浏览器,而不是由规范定义。

如果你想比较 <form> 的内容标签与创建时相同,无法比较其文本形式。毕竟,<form class="foo" id="bar"><form id="bar" class="foo">一旦被浏览器解析就会产生相同的 DOM 节点。

您应该仅比较您期望更改且具有明确定义状态的属性,例如 value输入元素。

关于javascript - 为什么 jQuery .html(string) 将 type 属性移到输入的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13117361/

相关文章:

javascript - 为什么我的签名 URL 会出现 403 错误?

javascript - 将文件拖放到 Chrome 的 textarea 中时获取光标位置

javascript - 获取 : I see the response in the DevTools but Fetch still gives me an "Access-Control-Allow-Origin" issue for GET

javascript - 我很难从计算机接收任何输出。滥用变量?或者我的 If 语句有问题?

javascript - 没有插件的 wordpress 横幅 slider

javascript - 如果尚未加载 jQuery,我该如何加载它?

javascript - 使用 jQuery 从 Ajax GET 响应中选择 HTML 元素

javascript - jquery和ajax请求

html - "background-size: cover"没有覆盖手机屏幕

html - 在输入字段和输入组插件之间添加标签