【问题标题】:On select event for a cloned select2 [duplicate]关于克隆的 select2 的选择事件 [重复]
【发布时间】:2018-03-15 16:15:42
【问题描述】:

我需要采取哪些额外步骤才能在克隆的 select2 上侦听 select2:select?

我试过.clone(true)$('.myclass').select2('destroy');在点击函数开头,用$('#table tbody').hide().show(0);刷新DOM。

这似乎是基于此 GitHub 问题的推荐方式。

https://github.com/select2/select2/issues/2522

$('.myclass').select2();

$('.myclass').on('select2:select', function(e) {
	alert('foo');
});

$('#addRow').click(function() {
  $('#table tbody').append($('#table tbody tr:last').clone());
  $('#table tbody tr:nth-last-child(2) select').addClass('myclass');
  $('.myclass').select2();  
});
.hidden {
  display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.full.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet"/>
<table id="table">
 <thead></thead>
 <tbody>
   <tr>
     <td>
      <select class="myclass">
        <option>1</option>
        <option>2</option>
        <option>3</option>
      </select> 
     </td>
   </tr>
   <tr>
     <td>
       <select id="clone" class="hidden">
        <option>1</option>
        <option>2</option>
        <option>3</option>
       </select>
     </td>
   </tr>
 </tbody>
 <tfoot>
  <button id="addRow">
    Add Row 
  </button>
 </tfoot>
</table>

【问题讨论】:

    标签: jquery jquery-select2 jquery-select2-4


    【解决方案1】:

    您可以使用event delegation 将事件绑定到动态添加的元素。

    $('.myclass').select2();
    
    $(document).on('select2:select','.myclass', function(e) {
    	alert('foo');
    });
    
    $('#addRow').click(function() {
      $('#table tbody').append($('#table tbody tr:last').clone());
      $('#table tbody tr:nth-last-child(2) select').addClass('myclass');
      $('.myclass').select2();  
    });
    .hidden {
      display:none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.full.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet"/>
    <table id="table">
     <thead></thead>
     <tbody>
       <tr>
         <td>
          <select class="myclass">
            <option>1</option>
            <option>2</option>
            <option>3</option>
          </select> 
         </td>
       </tr>
       <tr>
         <td>
           <select id="clone" class="hidden">
            <option>1</option>
            <option>2</option>
            <option>3</option>
           </select>
         </td>
       </tr>
     </tbody>
     <tfoot>
      <button id="addRow">
        Add Row 
      </button>
     </tfoot>
    </table>

    【讨论】:

    • 完美运行。感谢您的链接和帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2010-10-19
    • 2019-04-16
    相关资源
    最近更新 更多