我有一个表,该表具有一组未排序的值,并且希望按textContent的降序对这些值进行字母排序。尽管当我执行控制台日志时,元素“ defaultValues”显示为已排序,但是replaceWith不会更新dom。如何用已排序的元素替换未排序的元素?
function sortDefaultValues() {
rows = tbody.find('tr');
rows.each(function(i, row) {
var tableCell = $(row).find('td')[3];
var defaultValues = $(tableCell).find('span div.custom-label').clone();
defaultValues.sort(function(a, b) {
return a.textContent.localeCompare(b.textContent);
});
var oldDefaultValues = $(tableCell).find('span div.single-value').parent();
$(oldDefaultValues).replaceWith($(defaultValues).parent());
});
}
我希望replaceWith调用可以使用排序后的元素更新DOM,但是顺序保持不变。
最佳答案
尝试更改此:
$(oldDefaultValues).replaceWith($(defaultValues).parent());
对此:
$(oldDefaultValues).replaceWith(defaultValues);
var
defaultValues
是tableCell
的副本,当您指定$(defaultValues).parent();
时,实际上是在引用原始未排序表。另外,我始终使用sorttable进行表排序,但是我不确定这对您的实际情况是否有帮助。