Jquery 使用';不是';在IE中
当我使用jqueryeach并调用notinsideeach时,会对IE浏览器的性能产生影响,错误为“停止运行脚本” 使用,Jquery 使用';不是';在IE中,jquery,performance,Jquery,Performance,当我使用jqueryeach并调用notinsideeach时,会对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:not(.sel)”,this.hide()代码>语句获取性能问题
尝试使用$(“li”,this).not(“.sel”).hide()
也$(“li[class!=sel]”,this.hide()代码>
当我使用$(“li[class!=sel]”时,this.hide()代码>,在IE8中处理了性能问题,但未获得停止脚本消息
在FF中,这三个都工作得很好
在IE7中,为所有三个脚本获取“停止运行脚本”消息
请帮我解决这个问题
提前谢谢
编辑:
这些是易趣中的过滤选项列表。
默认情况下,我一开始只显示5个li。当我点击过滤器下名为“选择更多”的链接时。我打开一个模式窗口,在复选框中选择选项列表,在提交时,我会将“sel”类附加到所选的li。最后,在逻辑中,没有“sel”的li被隐藏。这些李可以超过400或更少。这取决于数据。用户有权选择所有li
谢谢你的回复。请给我一些想法:)好吧,这显然是性能问题。我猜这是因为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";
}
你有多少个li
?他们中有多少人拥有该类sel
?感谢您的回复。请检查我的编辑…你能给hidden li分配一个不同的类吗?我知道这并不能解决性能问题,但它会使您的选择器更加具体,您不需要“不”。我在我的逻辑中解决了这个问题。由于逻辑被引用到要隐藏的类,我通过处理最后一个索引将其完全置于循环之外。你的回答给了我一些想法,我接受了。再次感谢。