jquery-easyui组件combobox模糊查询在IE中数据太多导致浏览器崩溃
由于combobox模糊查询是吧原来的所有下拉的选项首先全部隐藏,然后再根据用户输入的值来判断,如果正确,则显示出来,本人测试1000条数据的时候在火狐里并没有问题,可是在IE8却导致浏览器十分缓慢,经常导致浏览器奔溃。由于在IE中修改display的值让元素显示出来会导致整个dom树重新加载一次,N多次循环之后便导致浏览器直接崩溃,我在下面修改了一下combobox.js模糊查找的机制,改成一开始先全部清空,然后在把符合条件的元素加载进来,下面是修改的代码:
1.添加一个方法
function _2cc(_2d, _2e, _2f) {
var _30 = $.data(_2d, "combobox").options;
var _31 = $(_2d).combo("panel");
//$.data(_2d, "combobox").data = _2e;
var _32 = $(_2d).combobox("getValues");
_31.empty();
for (var i = 0; i < _2e.length; i++) {
var v = _2e[i][_30.valueField];
var s = _2e[i][_30.textField];
var _33 = $("<div class=\"combobox-item\"></div>").appendTo(_31);
_33.attr("value", v);
if (_30.formatter) {
_33.html(_30.formatter.call(_2d, _2e[i]));
} else {
_33.html(s);
}
if (_2e[i]["selected"]) {
(function () {
for (var i = 0; i < _32.length; i++) {
if (v == _32[i]) {
return;
}
}
_32.push(v);
})();
}
}
if (_30.multiple) {
_1a(_2d, _32, _2f);
} else {
if (_32.length) {
_1a(_2d, [_32[_32.length - 1]], _2f);
} else {
_1a(_2d, [], _2f);
}
}
_30.onLoadSuccess.call(_2d, _2e);
$(".combobox-item", _31).hover(function () {
$(this).addClass("combobox-item-hover");
}, function () {
$(this).removeClass("combobox-item-hover");
}).click(function () {
var _34 = $(this);
if (_30.multiple) {
if (_34.hasClass("combobox-item-selected")) {
_1b(_2d, _34.attr("value"));
} else {
_d(_2d, _34.attr("value"));
}
} else {
_d(_2d, _34.attr("value"));
$(_2d).combo("hidePanel");
}
});
};
2.修改_3b方法(模拟查询的方法)
function _3b(_3c, q) {
var _3d = $.data(_3c, "combobox").options;
if (_3d.multiple && !q) {
_1a(_3c, [], true);
} else {
_1a(_3c, [q], true);
}
if (_3d.mode == "remote") {
_35(_3c, null, { q: q }, true);
} else {
var _3e = $(_3c).combo("panel");
//_3e.find("div.combobox-item").hide();
_3e.find("div.combobox-item").remove();
var _3f = $.data(_3c, "combobox").data;
var arry = [];
for (var i = 0; i < _3f.length; i++) {
if (_3d.filter.call(_3c, q, _3f[i])) {
arry.push(_3f[i]);
}
}
_2cc(_3c, arry, true);
}
};
源码下载:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通