Javascript 替换“;查找“;在IE8中进行优化?
我有一个递归jQuery函数,它有如下内容:Javascript 替换“;查找“;在IE8中进行优化?,javascript,jquery,html,dom,jquery-selectors,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”方面表现不佳:。我不太明白这个概念。有人能推荐一种方法让它在IE8中正常工作吗 编辑: 我在应用程序中尝试用此代码段替
parentItem.find('> div:first-child > span.c-checkbox > input[type="checkbox"]');
这在Chrome、Firefox、Safari甚至IE9中运行得非常好。IE8及以下版本的速度非常慢(15秒以上)
我在一篇文章中发现IE8在“find”方面表现不佳:。我不太明白这个概念。有人能推荐一种方法让它在IE8中正常工作吗
编辑:
我在应用程序中尝试用此代码段替换代码段,我想我注意到了一个改进:
parentItem.children("div:first-child").children("span.c-checkbox").children("input[type=checkbox]")
选择器是否相同?是否有方法可以测量此值?尝试减少find()中高级选择器的数量 试试这个:
parentItem.find('input:checkbox');
这不是查找问题,但您应该优化选择器表达式 最佳做法是使用
id
,使jQuery直接调用document.getElementById
来选择节点
如果您使用诸如$('.class')
$(input[name=somename])
之类的东西,则没有直接原始的javascript方法来执行此操作,jQuery将扫描所有节点以找到您想要的节点,这会导致性能问题
要解决问题,最好为元素指定一个id
或者
也许你可以粘贴你的HTML,这样我就可以为你编写更好的选择器:)同意,这似乎是一个可怕的复杂选择器。如果需要,将类放在复选框上并直接选择它。或者更好的是,用一个Id代替。用“儿童”代替“查找”已经10秒了!