我的自动完成脚本有问题。除了 IE8,它在任何地方都可以正常工作。当列表很大时,整个页面变得无响应,并且在 IE8 中 CPU 使用率上升到几乎 100%。
_renderItem = function(ul, item) {
var html = "";
if (item.NoDataFound) {
html = "No data found";
} else {
if (textField.val() != "") {
html = item.DisplayName.replace(new RegExp("(" + preg_quote(textField.val()) + ")", 'gi'), "<strong>$1</strong>"); // suggest message & Highlight matching part
} else {
html = item.DisplayName;
}
}
return $("<li><a>" + html + "</a></li>")
.data("item.autocomplete", item)
.appendTo(ul);
};
问题可能是 appendTo(ul) 行,它将每个项目单独附加到 ul 。例如,当到达最后一个元素时,我可以以某种方式仅将整个列表附加一次吗?