当我每次使用jquery并且不在每个内部时调用会对IE浏览器产生性能影响时出现错误,“停止运行脚本”。
使用$("li:not(.sel)", this).hide();
语句来解决性能问题。
尝试使用$("li", this).not(".sel").hide();
$("li[class != sel]", this).hide();
当我使用$("li[class != sel]", this).hide();
时,在IE8中处理了性能而没有收到停止脚本消息。
在FF中,三者都完美无缺。
在IE7中获取所有三个的“停止运行脚本”消息。
请帮我解决这个问题。
提前致谢。
修改 这些li是eBay中的过滤选项列表。 默认情况下,我首先只显示5个li。当我点击过滤器下的“选择更多”链接时。我打开一个模态窗口并选中复选框中的选项列表,然后在提交时我将'sel'类附加到选定的li。最后在逻辑中没有'sel'的li被隐藏了。这些li可以超过400或更少。取决于数据。用户有权选择所有的li。
感谢您的回复。请给我一些想法:)
答案 0 :(得分:1)
嗯,这显然是一个性能问题。我的猜测是因为jQuery在循环之前首先收集所有项目的列表。
我认为jQuery中没有办法避免这种情况,因此我建议不要使用jQuery而是使用常规DOM方法来循环遍历项目:
var item = this.firstChild; // Assuming "this" is the parent of the list items
while (item) {
$(item).filter(":not(.sel)").hide();
item = item.nextSibling;
}
我再次在循环中使用jQuery,这更简单,但也更慢。您可能还需要回退到DOM方法:
if (item.tagName == "LI" && item.className != "sel") {
item.style.display = "none";
}