JQuery 是否仍在评估选择器 RTL
Is JQuery still evaluating selectors RTL?
网上有太多关于JQuery选择器的信息,以至于我对JQuery选择器性能的当前状态感到困惑。
- JQuery 还在评估选择器 RTL 吗?
不管怎样,...
- 是
('#context').find('.inner') still faster than ('#context .inner')
吗? - 是
('li') still faster than ('.classOnAllAndOnlyOnLiElements')
吗?
我知道我可以编写自己的 JSPerf 性能评估,但是,我担心我会使用的那种 DOM 树不适合这样的测试(因为我不是专业人士,因此不知道我需要生成什么东西,例如 # DOM 树级别,# DOM 树元素等(
希望有人能从理论的角度回答我的问题,并通过更多地了解JQuery实现,而不是通过简单的性能评估,这可能只是一个特定DOM树的答案。
jsPerf 就像任何可以回答您问题的人的答案一样具有理论性。
我们只能告诉你jQuery是如何编写的,但是没有在你的DOM上进行测试,它是没有用的 - 就像jsPerf一样......
但是,我仍然会使用 jsPerf 并在多个浏览器中对一些小型 DOM 进行抽象测试,因此您知道如何最好地编写应用程序代码,无论其大小如何 - 无论如何,这应该是任何 Web 开发的通用想法。
一般来说,编码不应该与DOM的大小联系在一起,它应该与你的产品的性能联系在一起 - 这就是像jsPerf这样的工具可以提供帮助的地方
。;-(
这里重要的部分是,在简单选择器的情况下,并且你的选择器很简单,jquery使用*MatchesSelector
或document.querySelectorAll
如果它可用,它显然依赖于浏览器。因此,知道的唯一方法是在您将要使用的所有浏览器中对其进行分析。
来自 jquery 源代码:
....
matches = docElem.webkitMatchesSelector ||
docElem.mozMatchesSelector ||
docElem.oMatchesSelector ||
docElem.msMatchesSelector,
....
jQuery.extend({
find: function( selector, context, results, seed ) {
...
if ( seed ) {
while ( (elem = seed[i++]) ) {
if ( jQuery.find.matchesSelector(elem, selector) ) {
results.push( elem );
}
}
} else {
jQuery.merge( results, context.querySelectorAll(selector) );
}
return results;
}
....
})
...
jQuery.extend( jQuery.find, {
matches: function( expr, elements ) {
return jQuery.find( expr, null, null, elements );
},
matchesSelector: function( elem, expr ) {
return matches.call( elem, expr );
},
attr: function( elem, name ) {
return elem.getAttribute( name );
}
});
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery最近父级的数据属性选择器
- 为什么不'在JQuery中找到第二个css选择器的工作
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- jquery IE7中的第n个选择器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- jquery日期选择器年份范围默认值
- jquery日期选择器失去了交互性
- 正在搜索JavaScript日期选择器滑块
- 如何将返回的值应用于多个不同位置的多个选择器
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- 如何在多个jQueryUI日期选择器中屏蔽特定日期
- jquery日期选择器显示与值不同的文本
- jQuery选择器无法正常工作
- 文档就绪提供了错误的选择器高度
- JQuery 是否仍在评估选择器 RTL