2

ページに 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 関数についての洞察は素晴らしいでしょう。

4

1 に答える 1

0

それは単なるキャッシングの問題でした...

于 2012-04-13T20:33:02.990 に答える