在IE8中替换“find”以进行优化?

时间:2012-02-28 01:59:30

标签: javascript jquery html dom jquery-selectors

我有一个递归的jQuery函数,它有这样的东西:

parentItem.find('> div:first-child > span.c-checkbox > input[type="checkbox"]');

这在Chrome,Firefox,Safari甚至IE9中运行良好。使用IE8及以下版本非常慢(15秒以上)。

我在一篇文章中发现IE8使用“find”表现不好:http://ethermuse.blogspot.com/2011/07/jquery-find-slow-in-ie8.html。我不太明白这个概念。有人可以推荐一种方法在IE8中正常工作吗?

修改 我尝试在我的应用程序中用这个替换代码片段,我想我注意到了一个改进:

parentItem.children("div:first-child").children("span.c-checkbox").children("input[type=checkbox]")

选择器是否相同,有没有办法测量?

2 个答案:

答案 0 :(得分:2)

尝试减少 find()中的高级选择器数量。

试试这个:

parentItem.find('input:checkbox');

答案 1 :(得分:0)

这不是find问题,但您应该优化选择器表达式。

最佳做法是使用id,因为jQuery直接调用document.getElementById来选择节点。

如果您使用$('.class') $(input[name=somename])这样的内容,则没有直接的原始javascript方法来执行此操作,jQuery将扫描所有节点以查找所需的节点,从而导致性能问题

要解决您的问题,您最好为元素指定一个ID。

OR,

也许你可以粘贴你的HTML,这样我就可以为你编写更好的选择器:)