【问题标题】:how to clone forms in javascript preserving event bindings如何在保留事件绑定的javascript中克隆表单
【发布时间】:2011-02-20 19:18:59
【问题描述】:

我即将克隆一部分表单,其中包含一些绑定到click 事件的操作。我想将属性中出现的所有单词TEMPLATE 更改为'n_'+ID。我想从克隆部分的结构中抽象出来——应该是一个TEMPLATE 或 10。 我尝试过这样的事情,但绑定丢失了:

insert = function(){
    var old = $('#TEMPLATE');
    var copy = old.clone(true); 
    var html = old.html().replace(/TEMPLATE/g,'n'+next_ID);
    old.html(html);
    old.attr('id','n'+next_ID);
    old.show('fast');
    old.after(copy);
    next_ID++;
}

有没有什么方法可以在不知道复制元素结构的情况下轻松完成。

【问题讨论】:

    标签: javascript jquery events forms clone


    【解决方案1】:

    没有。您每次都必须重新添加处理程序。

    如果您真的想避免这种情况,请使用事件委托(delegate()live())来附加您的事件处理程序。这样它们就不会与特定的节点对象相关联,而只会与元素的位置相关联,无论它们是否匹配选择器,在事件触发时。

    $(myform).delegate('.dosomething', 'click', function() {
        // handle clicks on any .dosomething in the form now or added later
    });
    

    (并尽量避免在html()/innerHTML 上进行文本处理。这是不可靠的。最好使用attr 遍历要更改名称或类的对象。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-25
      • 2013-05-31
      • 1970-01-01
      • 2015-10-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      相关资源
      最近更新 更多