次のようにIE8でリスト要素の配列をソートしようとしています:
function comparator(params) {
var keepSelectedOnTop = params.keepSelectedOnTop;
return function (a, b) { // a, b are DOM objects
a = $(a); // wrap with jQuery
b = $(b);
if (keepSelectedOnTop) {
if (a.is(".selected") && !b.is(".selected")) {
return -1;
} else if (!a.is(".selected") && b.is(".selected")) {
return 1;
}
}
return a.text().localeCompare(b.text());
}
}
// ...
var items = $("ul li").detach().toArray();
items.sort(comparator(params));
これは小さなリストでは機能しますが、多くの要素があるとundefined is null or not an object
エラーが発生します。デバッガーで例外を中断するのb
はundefined
、割り当ての後です。
誰もこれに遭遇したことがありますか?他のブラウザでは正常に動作し、完全に有効な JS のようです。
PS jQuery のバージョンは 1.7.2 です