我有这样的代码:
var root="<div id=\"editorIdPrefix01e36f3a6d53541512468193877\" contenteditable=\"true\"></div>";
var kid = "<div>" +
"<input name=\"fieldControlId2\" id=\"fieldId2_1\" type=\"radio\" checked=\"checked\" value=\"1\">" +
"<input name=\"fieldControlId2\" id=\"fieldId2_2\" type=\"radio\" value=\"2\">" +
"</div>";
var result = $(kid).wrapAll($(root)).parent();
alert(result.find("input").first().prop("outerHTML"));
注意:checked="checked"
变量中有kid
的输入。在包装输入后,在Internet Explorer 11中未选中。知道发生了什么(在chrome / ff中工作正常)?
JsFiddle链接:https://jsfiddle.net/svejdo1/81dc0gg4/2/
修改
感谢您的评论,但是checked="checked"
是通过各种jQuery操作自动创建的(即如果您使用jquery到append
<input checked />
到某个父元素,它会自动更改为{{1} }
还通过实验将根更改为
checked="checked"
解决了这个问题,所以此时我怀疑是jQuery bug。
答案 0 :(得分:0)
事实证明,这是已知的IE 11序列化问题。在此处示例:
var root = document.getElementById('editor');
var kid1 = document.getElementById('kid1');
var kid2 = document.getElementById('kid2');
root.appendChild(kid1);
root.appendChild(kid2);
alert(root.innerHTML);
&#13;
<div id="editor" contenteditable="true" data-ckeditor="true"></div>
<div>
<input name="fieldControlId2" id="kid1" type="radio" checked="checked" value="1">
<input name="fieldControlId2" id="kid2" type="radio" value="2">
</div>
&#13;
在操作IE11的节点运行修复之前,解决方案很简单:
if (isIe11()) {
$(kid).find('input[checked="checked"]').each(function() {
$(this)[0].setAttribute("checked");
});
}