代码之家  ›  专栏  ›  技术社区  ›  Omar Abid

关于jquery append函数

  •  0
  • Omar Abid  · 技术社区  · 15 年前

    假设您有一个表和以下jquery代码

    var rows = $('#ttable').find('tbody > tr').get();
    $('#ttable tbody').append(rows[1]);
    

    对,rows对象得到所有的“tr”。第二行,将把第[1]行附加到表体中,所以您应该在表的末尾得到它。

    它工作得很好,但是原始行消失了。为什么?这意味着,行不重复,它只是移动。 为什么?如何解决这个问题??

    3 回复  |  直到 15 年前
        1
  •  0
  •   Community CDub    8 年前

    jquery的append函数使用 Node.appendChild() 在引擎盖下面,所以行为也一样

    来自MDC

    将节点添加到指定父节点的子节点列表的末尾。如果该节点已经存在,它将从当前父节点中删除,然后添加到新的父节点。

    就像这样 cobbal 说,您必须克隆行并附加克隆

        2
  •  3
  •   cobbal    15 年前

    如果您先克隆它,它将执行您想要的操作:

    var rows = $('#ttable').find('tbody > tr');
    $('#ttable tbody').append(rows.eq(1).clone());
    
        3
  •  1
  •   Darmen Amanbay Cherma Ramalho    15 年前

    可能是因为行[1]引用了一个已经插入AT表并在DOM中注册的对象。尝试克隆该对象并作为新对象添加。

    或者您可以尝试这样的smth:

    $('#ttable tr:first').before('<tr>...</tr>')