动态添加 div 但输入类型收音机出现问题

Adding div dynamically but issues with input type radio

我正在使用 <a>,单击它我正在克隆 div。在 div 中,我有两个同名的单选按钮。

现在的问题是当我 select 一个单选选项并克隆 div 接下来的两个单选按钮具有相同的名称并且 select 从最后一个 [=28] 编辑单选按钮=] 未selected.

$('.addMore').on('click', function() {
  $('.addMoreDiv:last').clone().insertAfter('.addMoreDiv:last');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="addMoreDiv">
  <label>
    <input type="radio" name="optradio">Radio 1
  </label>
  <label>
    <input type="radio" name="optradio">Radio 2
  </label>
</div>

<a href="#" class="addMore">Add More</a>

我尝试根据长度更新名称,但没有成功,在添加 div 后更新了名称。

是否有任何选项,以便当我添加新的 div 它带有不同的名称时,最后一个 div 的 selection 也不会生效?

$('.addMore').on('click', function() {
  $('.addMoreDiv:last').clone().insertAfter('.addMoreDiv:last');
  $('.addMoreDiv').each(function(i, v) {
    $(this).find('input').attr('name', 'optradio' + i)

  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="addMoreDiv">
  <label>
    <input type="radio" name="optradio">Radio 1
  </label>
  <label>
    <input type="radio" name="optradio">Radio 2
  </label>
</div>

<a href="#" class="addMore">Add More</a>

克隆和插入后遍历所有 div 并找到输入并更改 attr name 这将使单选按钮在每个 div[=13 上彼此分开=]

找到下面的代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="addMoreDiv">
  <label>
    <input type="radio" name="optradio">Radio 1
  </label>
  <label>
    <input type="radio" name="optradio">Radio 2
  </label>
</div>

<a href="#" class="addMore">Add More</a>

用不同的电台名称创建新 div 的脚本:

$('.addMore').on('click', function() {
  // total number of div's, to create unique name for `radio`
  var n = $('.addMoreDiv').length;
  var lastdiv = $('.addMoreDiv:last');
  var newdiv = lastdiv.clone();

  // changing the name for `radio`
  newdiv.find('input[type="radio"]').prop('name', 'optradio'+n);

  // adding after changing names.
  newdiv.insertAfter(lastdiv);

});

试试这个:

var clone = '';

  var count = 0;
  $('.addMore').on('click', function() {

    clone += '<div class="addMoreDiv">';
      clone += '<label>';
        clone += '<input type="radio" name="optradio'+count+'">Radio 1';
      clone += '</label>';
      clone += '<label>';
        clone += '<input type="radio" name="optradio'+count+'">Radio 2';
      clone += '</label>';
    clone += '</div>';

    $('.addMoreDiv').after(clone);

    count++;
  });

仍然面临问题。请在下方评论。

根据@sailens 的建议;我们需要更改单选组的 name,以便将其视为一组全新的单选按钮。我们可以通过以下方式实现:

var count = 0;
$('.addMore').on('click', function() {
  var clonedDiv = $('.addMoreDiv:last').clone();
  clonedDiv.find("input[type=radio]").each(function(){
    $(this).attr("name","optradio_"+count);
  });
  count++;
  clonedDiv.insertAfter('.addMoreDiv:last');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="addMoreDiv">
  <label>
    <input type="radio" name="optradio">Radio 1
  </label>
  <label>
    <input type="radio" name="optradio">Radio 2
  </label>
</div>

<a href="#" class="addMore">Add More</a>