我在页面上有两个 dynatree 对象实例。我让树从各种 XML 数据中填充。有一个 onChange 事件让树木改变他们正在使用的数据。我在更改期间做的最后一件事是对数据进行排序。当我调用 sort 函数时,它会为两个实例运行,导致第一个实例被错误地排序。我的这两种代码是:
$("#rightList").dynatree("getRoot").sortChildren(compareNodesRight, true);
其中使用此功能作为比较。
var compareNodesLeft = function(a,b)
{
//Find the sequence tags for both a and b.
var aKey = a.data.key;
var bKey = b.data.key;
var aValue = $(GLOBAL_LEFT_XML).find("item[id ='" + aKey + "'] data sequence").text();
var bValue = $(GLOBAL_LEFT_XML).find("item[id ='" + bKey + "'] data sequence").text();
return aValue > bValue ? 1 : aValue < bValue ? -1 : 0;
}
另一个函数调用另一种类型,即
$("#rightList").dynatree("getRoot").sortChildren(compareNodesRight, true);
它使用一个几乎与另一个相同的函数,除了它被调用
var compareNodesRight = function (a, b)
{
console.log("Comparing RIGHT");
//Find the sequence tags for both a and b.
var aKey = a.data.key;
var bKey = b.data.key;
var aValue = $(GLOBAL_RIGHT_XML).find("item[id ='" + aKey + "'] data sequence").text();
var bValue = $(GLOBAL_RIGHT_XML).find("item[id ='" + bKey + "'] data sequence").text();
return aValue > bValue ? 1 : aValue < bValue ? -1 : 0;
};
任何有关 .sortChildren 函数的见解都会很棒。