我需要在复选框点击
上执行以下代码 for (i = 0; i < dropDownCtrl.length; i++) {
$("#dropDownCtrl option[value='" + dropDownCtrl[i].objName + "']").remove();
}
然而,由于dropDownCtrl.length值较大,我在IE7中收到“停止运行此脚本”消息。
任何人都可以帮我解决如何将我的代码集成到下面给出的URL中提到的代码中
请帮忙。
答案 0 :(得分:3)
第一步:Don't use jQuery。
var opts = document.getElementById('dropDownCtrl').options, lookup = {},
l = dropDownCtrl.length, i;
// first use "lookup" as a quick lookup table - otherwise we'd have O(n*m) !
for( i=0; i<l; i++) lookup[dropDownCtrl[i].objName] = true;
// now we can do this in O(n+m), much better.
l = opts.length;
for( i=0; i<l; i++) {
if( lookup[opts[i].value]) opts.parentNode.removeChild(opts[i]);
}
钽哒!现在应该更快,更快。
答案 1 :(得分:1)
由于您使用的是jQueryUI Multi Select控件,因此CheckAll会导致此问题。 我已经尝试用 _toggleChecked 事件中的for循环替换.each(),导致超时。更改后的工作正常,没有任何脚本错误。
this.element
.find('option')
.each(function() {
//if(!this.disabled && $.inArray(this.value, values) > -1) {
self._toggleState('selected', flag).call(this);
//}
});