2016-03-31 22 views
1

我需要一点理解这一个请求:Js/JQuery中的Missunderstanding append()或治疗方法

它是一个按价格产品排序的函数。唯一的问题是,我不知道为什么我没有追加之前清空我的表内的产品

Here is a playground

这是代码

$length = $('[data-th="Prix : "]').length; 
$dispo = $('.productsDispo'); 
$temp = 0; 
for(var i = 0; i < $length; i++) 
{ 
    for(var j = i; j < $length; j++) 
    { 
     $prixI = $($dispo[i]).find($('[data-th="Prix : "]')).text().slice(0, $($dispo[i]).find($('[data-th="Prix : "]')).text().length-2); 
     $prixJ = $($dispo[j]).find($('[data-th="Prix : "]')).text().slice(0, $($dispo[j]).find($('[data-th="Prix : "]')).text().length-2); 

     if(parseInt($prixI) < parseInt($prixJ)) 
     { 
      $temp = $dispo[i]; 
      $dispo[i] = $dispo[j]; 
      $dispo[j] = $temp; 
     } 
    } 
} 
for(var i = 0; i < $length; i++) 
{ 
    $('.rwd-table tbody').append($dispo[i]) 
} 
+0

为什么需要清空表格以添加更多内容? – senschen

+0

@senschen我不添加,我排序他们 –

回答

3

那是因为jQuery的append作品。从docs

如果选择这样一个元素插入到DOM中的其他地方一个地方,它会被移动到目标(未克隆):

既然你做了整理和附加操纵你选择的DOM对象,它们已经在表格中,并且你基本上将它们移动到表格中,使用append

+0

哇,所以追加是一个功能的地狱!感谢您将它指向我,我之前只使用它来插入创建的元​​素。 –

1

jQuery的append不会对您传递给它的元素进行克隆。它将元素从原来的位置“剪切”下来,并将其“粘贴”成新的元素。

Here是一个简单的例子,显示这种行为,如果任何人需要它说明。