我正在尝试对 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