我有一个递归的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]")
选择器是否相同,有没有办法测量?
答案 0 :(得分:2)
尝试减少 find()中的高级选择器数量。
试试这个:
parentItem.find('input:checkbox');
答案 1 :(得分:0)
这不是find
问题,但您应该优化选择器表达式。
最佳做法是使用id
,因为jQuery直接调用document.getElementById
来选择节点。
如果您使用$('.class')
$(input[name=somename])
这样的内容,则没有直接的原始javascript方法来执行此操作,jQuery将扫描所有节点以查找所需的节点,从而导致性能问题
要解决您的问题,您最好为元素指定一个ID。
OR,
也许你可以粘贴你的HTML,这样我就可以为你编写更好的选择器:)