2010-07-08 17 views
0

我开发了一个web应用程序启动,我经常遇到以下代码。为了速度和可读性原因创建新的XHTML标记是否是一个好主意?

<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 +是我们的目标受众。

+0

请尝试没有jQuery(正如你所说的使用getElementsByTagName),我想你会发现速度的巨大提高。 – 2010-07-08 16:00:16

+0

另外,如果您只使用最新版本的FF + Chrome,则可以使用文档。querySelectorAll()和本地使用CSS选择器 – Rixius 2010-07-08 16:02:51

+0

没有:的确,但后来我无法完成文章中描述的完整选择器。 Rixius:认为jQuery 1.4使用querySelectorAll() – matdumsa 2010-07-08 16:12:05

回答

1

我不知道你提出的建议是否真的有必要或将会提高速度。但是,如果您知道“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()); 
+0

感谢DisgruntledGoat, 事情是有些类像“财产”有造型,而有些是为了被JS选中的目的。 另外我已经缓存尽可能多的jQuery对象。 也items.container可能是唯一的或不是,取决于用户的上下文。 – matdumsa 2010-07-08 16:13:37

+0

在这种情况下,我会试着保留你需要的选择器,而不是CSS。我的主要观点是,'items> item> propertyA'选择器不可能比'.items> .item> .propertyA'更有效率。 – DisgruntledGoat 2010-07-08 16:22:14

0

只要你做定制xlmns这是一个伟大的想法,任何修剪下来你的开发时间是一个伟大的想法。另外,这是为了一个封闭的环境吗?或者你只是关闭IE支持?

+0

此外,即使HTML可以实现自定义属性,HTML5正在标准化data- *可以添加data-keyword并将无限数量的自定义属性用于js/css – Rixius 2010-07-08 15:59:42

+0

Nope,没有封闭的环境。我们的目标是“狂野”......我有幸拥有IE用户群<5%。我们昨天实施了谷歌浏览器框架,以帮助这些5%的人进入21世纪。认为企业倾向于花时间实施HTML5功能以区别于竞争对手而不是支持垂死的技术。 – matdumsa 2010-07-08 16:07:22

+0

这非常棒,我在一个封闭的环境中操作,我们即将推出最新的Stable Chrome。不用说,我很兴奋。 – Rixius 2010-07-08 16:18:27

相关问题