ページに dynatree オブジェクトの 2 つのインスタンスがあります。さまざまな XML データからツリーを作成しました。ツリーが使用しているデータを変更する onChange イベントがあります。変更中に最後に行うことは、データの並べ替えです。sort 関数を呼び出すと、両方のインスタンスに対して実行され、最初のインスタンスが正しくソートされません。2種類の私のコードは次のとおりです。
$("#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 関数についての洞察は素晴らしいでしょう。