在 select 2 中追加时,多个克隆不起作用

multiple clone not working when append in select 2

谁能告诉我以下代码有什么问题: HTML

<div class="form-wrapper">
         <div class="form-repaet">
          <div class="form-group">
            <select id="selecttag" name="book[0].tag" class="form-control select2 input-lg" style="width: 100%;">
              <option selected="selected">Tag</option>
              <option>1</option>
              <option>2</option>
            </select>
          </div>
          <div class="form-group">
            <select class="form-control select2" name="book[0].is" style="width: 100%;">
              <option selected="selected">is</option>
              <option>1</option>
              <option>2</option>
            </select>
          </div>
          <div class="form-group">
            <select class="form-control select2 test1" name="book[0].select_tag" style="width: 100%;">
              <option selected="selected">Select a Tag</option>
              <option>1</option>
              <option>2</option>
            </select>
          </div>

          <div class="form-group">
           <div class="btn-group m-r"> 
             <button data-toggle="dropdown" class="btn btn-default dropdown-toggle"> 
              <span class="dropdown-label"><i class="ion-gear-b"></i></span> 
             </button> 
             <ul class="dropdown-menu dropdown-select"> 
              <li class="active">
               <a href="#">All</a>
              </li> 
              <li><a href="#">Option2</a></li> 
              <li><a href="#">Option3</a></li>  
             </ul> 
            </div>
          </div>
          <div class="clearfix"></div>
          <div class="line line-dashed line-lg pull-in"></div>
       </div>

JavaScript 我正在为 javascript

使用以下代码
$(document).ready(function(){
    var counter = 1;
    $("#add-form").click(function () {
        if(counter>10){
                alert("Only 10 textboxes allow");
                return false;
        }
        $(".form-repaet:last").clone().appendTo(".form-wrapper");
        //$(".form-repaet:last").select2();
        counter++;
    });

     $("#removebtn").click(function () {
      if(counter==1){
          return false;
       }
        $(".form-repaet").last().remove();
        counter--;
     });
  });

它正在创建 'form-repaet' div 的克隆,但 select 框不工作。我在克隆后尝试了 select2();,但它不起作用。任何帮助,将不胜感激。非常感谢!

这是一个有效的 jsFiddle

首先,将另一个选择器添加到 select2 元素,而不是 select2,因为它附加到 spans selec2 创建的元素。这就是您收到该错误的原因:

The select2('destroy') method was called on an element that is not using

在我的例子中是 xxx

并像这样使用:

$(".form-repaet:last").find('.xxx').select2('destroy');
var clone = $(".form-repaet:last").clone();
$('.form-wrapper').append(clone);
$('.xxx').select2();

我不关心删除。

注意

在 HTML 中,所有 ID 都应该是唯一的,所以在克隆时要注意它。

这对我有用:

代码前:

addRecord($(this).closest('.glacc-detail'));

更改代码后:

$('.select2bs4').select2('destroy');  //added this line
addRecord($(this).closest('.glacc-detail'));
$('.select2bs4').select2();      //added this line