以下のコードを参照してください
source = $("<root><item desc='SQL'/><item desc='Microsoft'/><item desc='Action Script'><item desc='Java script'></root>")
//WAY 1: This way is not working...
source.children().sort(function(a, b)
{
var aText = $(a).attr("desc").toLowerCase();
var bText = $(b).attr("desc").toLowerCase();
if(aText == bText)
return 0;
return aText > bText ? 1 : -1;
});
alert(source[0].outerHTML);
//WAY 2: This is working...
var temp = source.children();
temp.sort(function(a, b)
{
var aText = $(a).attr("desc").toLowerCase();
var bText = $(b).attr("desc").toLowerCase();
if(aText == bText)
return 0;
return aText > bText ? 1 : -1;
});
source = $("<root/>");
source.append(temp);
alert(source[0].outerHTML);
方法1は機能しておらず、方法2は正常に機能しています。子を別の変数に割り当ててから並べ替えて、元の変数に戻す必要があるのはなぜですか?これは正しく効率的な方法ですか?
このFIDDLEを試すことができます...。