代码之家  ›  专栏  ›  技术社区  ›  SteD

克隆对象不可删除

  •  2
  • SteD  · 技术社区  · 16 年前

    我正在尝试使用jquery克隆可删除的对象,但克隆的对象不可删除。

    $(document).ready(function(){
    $("input[value='Add']").click(function(e){
    e.preventDefault();
    $("div.field:last").clone().insertAfter("div.field:last");
    });
    
    $(".field").droppable();
    

    HTML

    <div class="field">
    Last Name<input type="text" value="" />
    First Name<input type="text" value="" />
    </div>
    <div class="field">
    Last Name<input type="text" value="" />
    First Name<input type="text" value="" />
    </div>
    <input type="Submit" name="submit" value="Add" /> 
    

    Firebug显示克隆的对象也具有可下拉的类ui,知道为什么它不能工作吗?

    编辑
    设置bool(true)或使用.droppable()链接克隆的对象也不起作用

    2 回复  |  直到 16 年前
        1
  •  3
  •   James    16 年前

    您需要将事件复制到克隆;通过 true clone() :

    $("div.field:last").clone(true).insertAfter("div.field:last");
    

    您可能还需要从原始文件复制一些数据:

    var original = $("div.field:last");
    var clone = original.clone(true);
    clone.data( 'droppable', jQuery.extend(true, {}, original.data('droppable')) );
    /* Untested! */
    
        2
  •  0
  •   SteD    16 年前

    我找到了一种方法,通过使用.live,我使用了一个插件 .livequery 其功能与.live非常相似

    当您绑定一个“活动”事件时,它将绑定到页面上所有当前和将来的元素。

    $("input[value='Add']").livequery("click", function(e){
    e.preventDefault();
    $("div.field:last").clone().insertAfter("div.field:last");
    $("div.field").droppable();