关于多个元素的Jquery clone()

时间:2013-02-12 12:15:36

标签: jquery clone

使用Jquery clone()克隆多个元素时遇到问题。

我有HTML:

<div id="is_watermark">
    <input class="is_watermark" type="checkbox" name="is_watermark" value="1" checked />
    <span>Add watermark</span></div>
<div id="minify_image">
    <p>By default image is 400px. You can change size:</p>
    <input class="minify-radio" type="radio" name="minify" value="200"  /><span>200px</span>
    <input class="minify-radio" type="radio" name="minify" value="400" checked="checked"/><span>400px</span>
    <input class="minify-radio" type="radio" name="minify" value="600" /><span>600px</span>
    <input class="minify-radio" type="radio" name="minify" value="800"/><span>800px</span>
</div>

然后我使用ajaxFileUpload,它基本上创建新表单并通过ajax发送图像:

我的Javascripts中有以下内容:

var oldInputElements = $('.minify-radio, .is_watermark');
var newInputElements = $(oldInputElements).clone(true);
console.log(oldInputElements);
console.log(newInputElements);

在Firebug中,我看到oldInputElements很好,代表我在HTML中所拥有的内容,但新创建的newInputElements包含所有元素,但只有一个通用值来自无线电元素。例如,如果当前选择的无线电值为600,那么在新创建的变量newInputElements中,所有五个输入元素(包括复选框!)的值都为600.

这是一个错误,还是我只是遗漏了什么?

1 个答案:

答案 0 :(得分:0)

$("input:radio").change( function() {
   $("input:radio").removeAttr("checked");
   $(this).prop("checked", true);
});

您可以使用此代码。删除已检查的属性/属性,然后将该属性添加到当前所选项/节点。

Fiddle