2013-12-18 39 views
1

我有这个看似简单的问题。我首先检查一个单选按钮,然后克隆它。原始的单选按钮变为未选中,并且克隆的按钮是正确的。任何人都可以告诉我为什么原始的单选按钮变得没有选中?jQuery的clone()函数弄乱了原始元素的属性

在此先感谢!

<!DOCTYPE HTML> 
<html> 
<head> 
    <script src="jquery.js"></script> 
</head> 
<body> 
    <div id="ClonedDiv" style="display:none"></div> 
    <div id="RadioDiv"> 
     <input id="high" type="radio" name="severity" value="High"/> 
     <input id="medium" type="radio" name="severity" value="Medium"/> 
     <input id="low" type="radio" name="severity" value="Low"/> 
    </div> 
    <script> 
      $("#RadioDiv #high").prop("checked", true); 
      alert("RadioDiv's High is: " + ($("#RadioDiv #high")[0].checked ? "CHECKED." : "NOT CHECKED!")); 
      $("#ClonedDiv").empty(); 
      $("#RadioDiv>input").clone().appendTo("#ClonedDiv"); // I'm merely cloning RadioDiv's inputs into ClonedDiv... 
      alert("RadioDiv's High is: " + ($("#RadioDiv #high")[0].checked ? "CHECKED." : "NOT CHECKED!")); 
      alert("ClonedDiv's High is: " + ($("#ClonedDiv #high")[0].checked ? "CHECKED." : "NOT CHECKED!")); 
    </script> 
</body> 
</html> 
+2

这似乎是正常的行为,它似乎没有涉及jQuery:http://jsfiddle.net/V5rAW/。我想你可能会争论,克隆一个单选按钮是否也应该克隆它的当前状态,但是SO不适合讨论这种事情。 –

+0

如果希望原始按钮保持选中状态,请在追加之前更改'name'属性或从克隆的单选按钮中删除'checked'属性。 –

+0

这就是我觉得有趣的地方。克隆的元素是正确的,但原来不是 - >其状态丢失。这是记录在任何地方?谢谢! – Dunnomuch

回答

4

只能检查组中的一个单选按钮。检查一个不检查所有其他人。一组单选按钮由它们全部具有相同的名称属性确定。将它们克隆到隐藏的div中,然后检查一个不检查另一个。

+1

这是一个显而易见的答案,很难看出主要是因为这种行为对于无线电来说是独一无二的,并且可能Dunnomuch(以及我自己)在克隆框中具有不同的输入类型。 – igasparetto