2012-04-22 73 views
0

我在一个大量使用Ajax请求的网站上工作,该请求在DOM中构建基于选项卡的结构。我担心的是,DOM将堆积如此多的选项卡和元素,以至于JQuery选择器最终表现不佳。阻止jQuery遍历文档的部分

有没有办法维护一个大的DOM,但提供了一个“提示”排除某些部分。例如,我想维护DOM中的元素,但只有我的JQuery选择器适用于活动选项卡。

我希望会有某种形式的“忽略”标签的,我可以动态地应用到无源部分

也许是存储在数据字典中的活动标签元素的替代,并把他们进出的DOM,因为它们成为焦点。

+0

你能发表一些代码吗?这取决于你想要做什么 – elclanrs 2012-04-22 23:47:19

+0

这更多的是一个概念性问题。我正在寻找一种方法来标记DOM内容以被JQuery忽略 – TGH 2012-04-22 23:48:17

+0

你所要求的答案基本上是 - 不!另一方面,如果它具有唯一标识符的结构,那么javascript可以在它开始成为问题之前处理一个相当大的DOM,而我的经验是浏览器渲染在此之前就会成为问题。 – adeneo 2012-04-22 23:56:32

回答

1

可以使用context方法:

)最初传递到jQuery的(该DOM节点上下文;如果没有通过,那么上下文将可能是文档。

http://api.jquery.com/context/

+0

这是一个潜力解。我必须再去探索一下 – TGH 2012-04-22 23:55:42

1

只是提供一个选择器,告诉jquery你想要什么。例如,给每个标签一个id。然后,如果你想获得的所有a标签在news标签:

$("#news a") 

jQuery将随后只知道在#news看。

id查询通常非常有效,因为只有一个元素可以有给定的id

+0

不,这并不总是一种选择,因为某些选择器可以在各个部分之间重复使用,而且我也没有奢侈的提供这样的粒度选择器 – TGH 2012-04-22 23:49:24

+0

如果您不喜欢不控制代码,那么你很可能不幸运。 – 2012-04-22 23:51:50

0

在您的选择器上,您可以传递一个上下文作为第二个参数来告诉jquery文档的哪部分外观,比如说:​​这样可以减少要查找的节点数量。 参考:http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx#tip9

+0

我正在寻找一种解决方案,不提供粒度选择器,因为它并不总是一些共享代码的选项 – TGH 2012-04-22 23:51:09

+0

那么,我发布的参考可以帮助您找到您要找的内容 – loki 2012-04-22 23:54:59

1

正如我在评论中说,你用你选择的方式取决于你的代码。但是,如果您最终选择了一个巨大的选择器列表,您可以随时使用任何规则集合filter()

$elements.filter(function(){ 
    return $(this).parent('.foo').length; // Only elements with parent `.foo` 
}); 
+0

由于元素的数量,关注点更多的是我将要处理的搜索时间 – TGH 2012-04-22 23:53:48