出于速度和可读性的原因,创建新的XHTML标记是一个好主意吗?

时间:2010-07-08 15:53:34

标签: jquery performance xhtml markup

我为一个网络应用程序启动开发,我经常遇到以下代码。

<div class="items container">
    <div class="item">
        <div class="property propertyA">Some stuff</div>
    </div>
</div>

我们的典型jQuery选择器看起来非常类似于:

$("div.items.container > div.item > div.property.propertyA").map(doStuff());

问题是我们经常调用类选择器,直到执行JS所花费的大部分时间用于运行jQuery的内部curCSS方法。

虽然我们可能只有一个物品容器,但它可能包含数百个物品,每个物品都有数十个物品。实际上,在任何给定的时间页面上总是存在大约5K + html标签。

我们在客户端捆绑越来越多的逻辑以容纳新功能。我觉得这种情况不会长久存在,因为有些浏览器在某些条件下已经显示出致命的“你的页面没有响应”的消息。我们正考虑很快重构整个客户端。

我正在考虑在新的xml命名空间中实现一些新的XHTML标记,因此它看起来像:

<items>
    <item>
        <propertyA>Some Stuff</div>
    </item>
</items>

然后我可以选择以下方式:

$("items > item > propertyA")

或直接

$("propertyA")

纠正我,如果我错了,但摆脱我的慢速CSS选择器,支持一些“getElementsByTagName”可以节省我很多周期,同时使我的css cuter和我的整体代码更整洁。这样的解决方案会起作用吗?

BTW:在这里我们假设IE不存在并且firefox 3+ || Chrome 3+是我们的目标受众。

2 个答案:

答案 0 :(得分:1)

我不知道你提出的建议是否真的有必要,或者是否会提高速度。但是,如果您知道“property”或“propertyA”类将始终位于“item”类中,那么仅使用.property.propertyA作为选择器会更有效。< / p>

如果您的.items.container元素对于页面是唯一的,请考虑在其上使用ID。然后jQuery将首先选择ID,然后只查看项目内的ID。除非您要排除其他元素(例如<p class="propertyA">...</p>),否则不要将标记名称添加到选择查询中。

如果你反复调用选择器,你应该缓存结果以防止重复搜索(尽管我相信jQuery 1.4会为你做这个)。类似的东西:

var $properties = $(".items.container > .item > .property.propertyA");
$properties.map(doStuff());
//later on...
$properties.map(doStuff());

答案 1 :(得分:0)

只要您制作自定义xlmns,这是一个好主意,任何缩短开发时间的东西都是个好主意。这是一个封闭的环境吗?或者你只是关闭IE支持?