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

我开发了一个Web应用程序启动,并且我经常遇到以下代码。

<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和我的整体代码整齐。 这样的解决方案是否有效?

顺便说一句:在这里我们运行的假设,IE浏览器不存在和Firefox 3 + || Chrome 3 +是我们的目标受众。


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

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

如果你反复调用选择器,你应该缓存结果以防止重复搜索(虽然jQuery 1.4为你做了这个我相信)。 就像是:

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

只要你定制了xlmns,这是一个好主意,任何能缩减你开发时间的东西都是一个好主意。 另外,这是为了一个封闭的环境吗? 或者你只是关闭IE支持?

链接地址: http://www.djcxy.com/p/88823.html

上一篇: Is it a good idea to create new XHTML markup for speed and readability reasons?

下一篇: Are there any standards for markup like the one that SO site uses?