【问题标题】:Jquery events not binding to newly cloned fieldsJquery 事件未绑定到新克隆的字段
【发布时间】:2013-08-06 14:13:28
【问题描述】:

我有一个允许用户添加更多字段的表单。我通过克隆它们所在的 div 来做到这一点。我确实使用了 clone(true) 但我遇到的问题是我用来确保数字输入的 jquery 似乎不适用于新克隆的字段。当我输入它们时,它们会更改顶部字段集中的值(被克隆的那个) 这是我的克隆函数

$('#more_fields').click(function(){
        if(fields >= 5)
        {
            alert("We're Sorry... You can have a maximum of 6 fieldsets for a freightquote request");
        }
        else
        {
            $('.freight_fields:first').clone(true).hide().insertAfter('.freight_fields:last').slideDown('slow');
                var last = $('.freight_fields:last');
                last.append(new_button.clone(true));
                fields++;
        }
        }); 

我在这些字段上使用带有 numbers_only 类的自动数字库

$('.numbers_only').autoNumeric({mDec:0});

如果其中任何一个令人困惑......当我克隆包含 field_one 的freight_fields(外部 div)并输入 field_one 的克隆版本时,原始值会更改,而新值不会更改。我确定这与我通过的 true 仅影响外部 div 的事实有关,但是这件事中有很多字段,我不想为了单独克隆它们中的每一个绑定他们。

【问题讨论】:

  • 您是否尝试过clone(true, true),它应该复制克隆元素及其子元素的数据和事件。另外:this.name 不是 $(this).attr('name');如果您多次检查同一个属性,switch () {} 可能比 if/else if 更好
  • 这是duplicate吗?
  • 刚试了不行
  • 你能为此提供jsfiddle吗?
  • 我会试一试...以前从未使用过,所以可能需要一点时间

标签: jquery


【解决方案1】:

克隆一个应用了插件以继承插件功能的元素通常是不安全的,除非您知道该插件以一种克隆友好的方式应用于该元素。

我强烈建议您使用 clone(false) 简单地克隆元素,然后在克隆的元素上重新应用插件。

【讨论】:

  • 嗯,像var $newEl = $oldEl.clone(false);然后$newEl.autoNumeric({ mDec: 0 });
  • 优秀的答案。我这样做了,只是在所有文本输入上运行了一个循环来绑定这个新事件。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
相关资源
最近更新 更多