2013-12-18 46 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