wrapAll取消选中Internet Explorer 11中选中的单选按钮

时间:2017-12-05 10:32:51

标签: javascript jquery internet-explorer

我有这样的代码:

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。

1 个答案:

答案 0 :(得分:0)

事实证明,这是已知的IE 11序列化问题。在此处示例:

&#13;
&#13;
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;
&#13;
&#13;

在操作IE11的节点运行修复之前,解决方案很简单:

if (isIe11()) {
  $(kid).find('input[checked="checked"]').each(function() {
    $(this)[0].setAttribute("checked");
  });
}