Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—从对DOM集合排序中获得的好处_Javascript_Sorting_Css Selectors - Fatal编程技术网

Javascript—从对DOM集合排序中获得的好处

Javascript—从对DOM集合排序中获得的好处,javascript,sorting,css-selectors,Javascript,Sorting,Css Selectors,我正在做我的个人项目,那就是创建一个javascript选择器引擎。引擎将使用CSS2-CSS3语法来选择元素节点。我正在将我的引擎的选择结果与其他选择器引擎的结果进行比较(主要是Sizzle)。我还将其与名为querySelectorAll(QSA)的本机选择器方法进行了比较。我注意到一个区别 文档的HTML结构如下所示: 我使用的选择器是: “span,代码” 当我使用Sizzle或QSA进行选择时,得到的结果是: [..,] 当我使用选择器引擎时,结果是: [,..] 看起来,Sizzl

我正在做我的个人项目,那就是创建一个javascript选择器引擎。引擎将使用CSS2-CSS3语法来选择元素节点。我正在将我的引擎的选择结果与其他选择器引擎的结果进行比较(主要是Sizzle)。我还将其与名为querySelectorAll(QSA)的本机选择器方法进行了比较。我注意到一个区别

文档的HTML结构如下所示:

我使用的选择器是:

“span,代码”

当我使用Sizzle或QSA进行选择时,得到的结果是:

[
..
,]

当我使用选择器引擎时,结果是:

[,
..
]

看起来,Sizzle和QSA根据元素在文档上的位置对集合进行排序。我的选择引擎不这样做。我发现,使用ComparedDocumentPosition和数组排序方法可以实现排序。显然,这会对性能产生一些影响,尽管我还没有测试它。(来源:)

我想知道排序节点是否比“未排序”节点有一些好处。例如,当元素被排序时,将css样式添加到集合的节点(在循环中,即)是否更有效。是否有其他情况下,使用排序集合可能更好

示例(elementNodes包含选择结果):

for(var i=0,il=elementNodes.length;i }


首先,我喜欢您在这里所做的工作,尤其喜欢您与其他开源引擎进行比较

实际上,这两个例子的“排序”完全不同


除非你找到一个令人信服的理由(我想不出一个)将你的分类方式与sizzle相同,否则不要这样做。只要您清楚地了解自己的引擎的顺序,并且其他人也能理解它,那么这才是最重要的。

首先,我喜欢您在这里所做的工作,尤其喜欢您与其他开源引擎进行比较

实际上,这两个例子的“排序”完全不同


除非你找到一个令人信服的理由(我想不出一个)将你的分类方式与sizzle相同,否则不要这样做。只要你清楚地了解自己引擎的顺序,其他人也能理解,那么这才是最重要的。

我相信对节点进行排序所能获得的唯一优势是可预测性,这是不可嗅探的…@FlorianMargaine什么的源代码?对元素集合进行排序的方法可以从我提供的链接中找到(这是John Resig很棒的博客中的一篇文章),我很羞愧地没有展示我的选择器引擎中的代码:D我不太擅长编写漂亮的代码。好吧,你是说你有一些比QSA或Sizzle更快的代码要选择,我想看看:-)。如果太糟糕了,也许可以让它变好?这只会对你有好处:-)我的选择引擎可能没有QSA那么快。它比Sizzle快(根据jsPerf),但是我的有更多的bug和更少的特性。我刚开始重写它,因为我有了一个更好的想法应该怎么做。也许有一天,当它处于更好的状态时,我会展示它:P当QSA不受支持时,我将使用它作为后备。我相信通过对节点进行排序可以获得的唯一优势是可预测性,这是不可嗅探的…@FlorianMargaine什么的源代码?对元素集合进行排序的方法可以从我提供的链接中找到(这是John Resig很棒的博客中的一篇文章),我很羞愧地没有展示我的选择器引擎中的代码:D我不太擅长编写漂亮的代码。好吧,你是说你有一些比QSA或Sizzle更快的代码要选择,我想看看:-)。如果太糟糕了,也许可以让它变好?这只会对你有好处:-)我的选择引擎可能没有QSA那么快。它比Sizzle快(根据jsPerf),但是我的有更多的bug和更少的特性。我刚开始重写它,因为我有了一个更好的想法应该怎么做。也许有一天,当它处于更好的状态时,我会展示它:P当QSA不受支持时,我将使用它作为后备。
 elementNodes[i].style.height = '100px';

 elementNodes[i].style.width = '100px';

 elementNodes[i].style.background = 'red';