【问题标题】:How to turn dynamic DOM element into Select2?如何将动态 DOM 元素转换为 Select2?
【发布时间】:2017-03-20 21:30:50
【问题描述】:

我有以下 HTML 代码:

<input type="text" id="condition_value_1">
<span class="click_me">Click Me</span>

我将#condition_value_1 元素替换为如下所示的 SELECT 类型,并尝试将最近的 SELECT 转换为 Select2:

$(function() {
  $('.click_me').click(function(ev) {
    var condition_value_1 = $('#condition_value_1');
    var select_html = '<select name="condition_value_1" id="condition_value_1"></select>';
    condition_value_1.replaceWith(select_html);

    $('body').on('DOMNodeInserted', '#condition_value_1', function() {
      $(this).select2({
        placeholder: 'Start typing ...',
        tags: true
      });
    });
  });
});

但是由于元素保持为普通的 HTML Select 类型并且不会变成 Select2,因此无法正常工作。这是一个Fiddle 供您玩。我正在使用 jQuery 1.12.4 并选择 4.0.3。

如何将动态元素转换为 Select2 元素?有什么帮助吗?

【问题讨论】:

    标签: javascript jquery select2 jquery-select2-4


    【解决方案1】:

    如果不使用DOMNodeInserted 事件绑定,似乎对我有用。

    当调用 replaceWith() 方法时,假设元素已添加到 DOM 中是公平的。

    JS Fiddle updated

    $(function() {
      $('.click_me').click(function(ev) {
        var condition_value_1 = $('#condition_value_1');
        var select_html = '<select name="condition_value_1" id="condition_value_1"></select>';
        condition_value_1.replaceWith(select_html);
    
        $('#condition_value_1').select2({
            placeholder: 'Start typing ...',
            tags: true
          });
      });
    });
    

    【讨论】:

    • 我试图将它们链接起来 (jsfiddle.net/reynierpm/o1dx3euu/3) (一如既往地想太多简单的东西)并且对我不起作用,这就是为什么我尝试使用另一条路径但是是的,你的工作!谢谢
    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2012-12-02
    • 2019-05-24
    相关资源
    最近更新 更多