Missunderstanding append()或Js / JQuery中的一个惩罚

时间:2016-03-31 15:20:25

标签: javascript jquery

我需要对这一点有所了解:

它是按价格产品排序的功能。唯一的问题是我不明白为什么我不必在添加产品之前清空我的桌子

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])
}

2 个答案:

答案 0 :(得分:3)

这是因为append在jQuery中的工作方式。来自docs

  

如果以这种方式选择的元素被插入到DOM中其他位置的单个位置,它将被移动到目标中(未克隆):

由于您对所选的DOM对象进行了排序和追加操作,因此它们已经在表格中,您基本上可以使用append在表格中移动它们。

答案 1 :(得分:1)

jQuery的append不会复制您传递给它的元素。它从旧位置“切割”元素并将其“粘贴”为新元素。

Here是一个更简单的例子,显示了这种行为,如果有人需要说明的话。