jQuery - 动态添加元素上“.on”和“.each”的组合[重复]

Posted

技术标签:

【中文标题】jQuery - 动态添加元素上“.on”和“.each”的组合[重复]【英文标题】:jQuery - combination of ".on" and ".each" on dynamically added elements [duplicate] 【发布时间】:2015-05-26 05:21:25 【问题描述】:

我正在动态添加新元素,这些元素如下所示:

<div id="cars">
  <input type="text" name="car_added[]" class="car" />
  <input type="text" name="car_added[]" class="car" />
  <input type="text" name="car_added[]" class="car" />
  <input type="text" name="car_added[]" class="car" />
  <input type="text" name="car_added[]" class="car" />
</div>

如果这些元素是静态的,我可以使用以下代码轻松地在它们上添加处理程序:

$(".car").each(function()$(this).datetimepicker();)

点击输入后,将显示日期时间小部件。

但是如何为动态添加的元素执行此操作?我尝试了以下方法,但它不起作用:

$('#cars').on('click', '.car', function() 
    $(this).datetimepicker();
);

如何在这个 sn-p 中实现.each 部分?

提前谢谢你。

【问题讨论】:

jsfiddle.net/SJ7bJ/98 是的 - 我点击“添加新车”,然后会显示一个输入。点击输入后,我想显示datepicker 小部件。 第二个样本不需要每个部分都有 【参考方案1】:

试试这个:您不需要迭代然后将 datepicker 应用于元素。拨打datetimepicker()如下图即可

$('#cars .car').datetimepicker();

编辑 - 在动态生成的元素上添加 datetimpicker,在添加动态生成的元素时附加它。

例如 - 我在按钮单击时添加元素。我需要同时添加 datetimepicker。请参阅下面的代码和 jsfiddle 演示

$(function()
    //add datetimepicker for existing elements
    $('#cars .car').datepicker();
    
    //add datetimepicker for dynamically added elements when adding it
    $('#clickMe').click(function()
      var newElement = $('<input type="text" name="car_added[]" class="car" />');
      //add datepicker here
      newElement.datepicker();  
      $('#cars').append(newElement);
    );
);

JSFiddle Demo

注意- OP 使用了datetimepicker,但请注意我使用的是 datepicker 而不是 datetimepicker。

【讨论】:

但是这种方法不适用于新添加的元素。 @user984621..试试我的回答 @user984621 请检查我的编辑。请注意我使用的是 datepicker 而不是 datetimepicker

以上是关于jQuery - 动态添加元素上“.on”和“.each”的组合[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JQuery给动态添加的元素绑定事件

jQuery动态添加事件(on)可用于未来元素

jquery on()绑定的点击事件在js动态新添加的元素上无效

Jquery 给动态添加元素添加点击事件

jQuery对 动态添加 的元素 绑定事件(on()的用法)

jquery append 动态添加的元素事件on 不起作用的解决方案