selector优化写法----之---改变selector的顺序

例如以下结构,相当于一个只有一层的树。

代码

<body>
<ul class="open" >
<li>1</li>
<li>..</li>
<li>100</li>
</ul>
<ul class="open" >
<li>1</li>
<li>..</li>
<li>100</li>
</ul>
<ul class="open" >
<li>1</li>
<li>..</li>
<li>100</li>
</ul>
<ul>
...
</ul>
<ul class="closed" >
<li>1</li>
<li>..</li>
<li>100</li>
</ul>
<ul class="closed" >
<li>1</li>
<li>..</li>
<li>100</li>
</ul>
</body>

 


其中,ul.open有5个,ul.closed有95个
现在想获取'ul.open > li'
正常的写法,可能是$('ul.open>li')。
在当前案例下,试想一下:
如果选择器是从右往左来找,则:先找到100*100个li,再向上寻父ul.open,找到则通过。
如果选择器是从左往右来找,则:先找到5个ul.open,再寻子,找5*100个li。
显然,后者快于前者。
现实情况是:很多selector都是从右往左找的。那我们该怎么来优化这个问题呢?

嗯,selector是从右往左的,但是我们可以改变它的查找方向
例如,QWrap里的写法:
W('ul.open').query('>li'),它返回的结果与W('ul.open>li')是一样的。
不过在这种情况下,W('ul.open').query('>li')把查询方向改成了从左往右来query。

 

posted on 2011-01-28 13:12  JKisJK  阅读(811)  评论(6编辑  收藏  举报

导航