1

好的,所以我有一个带有单选按钮的元素,当单击添加按钮时我克隆了这个元素;但是,一旦我这样做,初始元素上的按钮就会被取消选中。我知道为什么会发生这种情况,但是一旦我开始实施一项工作,它就不像我预期的那样做。

这是我的解决方案:

    //This stores the value of the checked element into a variable before the clone
    var radioKeep = $('input.event'+(numOfParts-1)+':checked').val();

    //Cloned the element passed into the function
    $(element).parent().clone(true, false).insertAfter($(element).parent());

然后在克隆之后,我尝试确保使用以下 jquery 和 xpath 的组合重新检查初始单选按钮。

    $('input.event'+(numOfParts-1)+'[@value='+radioKeep+']').attr('checked', 'checked');

结果是检查了所有的无线电元素……为什么???

提前致谢。

4

1 回答 1

1

当您克隆元素时,新元素与旧元素具有相同的值和类,然后您设置它们的检查值,但是只能检查一个,因此最后一个接受检查。.first 会解决这个问题

$('input.event'+(numOfParts-1)+'[@value='+radioKeep+']').first().attr('checked', 'checked');

但是,如果您使用比 1.3.2 更新的 jquery,这仍然不起作用,因为在 1.3.2 中删除了 xpath 支持,只需删除@

$('input.event'+(numOfParts-1)+'[value='+radioKeep+']').attr('checked', 'checked');

现在我们有一个可能的未来证明问题,你.attr()用来设置一个属性,你真的应该使用它.prop("checked", true)

$('input.event'+(numOfParts-1)+'[value='+radioKeep+']').prop('checked', true);

如果这不能解决您的问题,我建议发布示例 html 和一个我们可以用来测试您的代码的工作函数。由于缺少周边功能和缺少html,我这里做了很多假设。

于 2013-01-16T06:51:15.207 回答