我在一个大量使用Ajax请求的网站上工作,该请求在DOM中构建基于选项卡的结构。我担心的是,DOM将堆积如此多的选项卡和元素,以至于JQuery选择器最终表现不佳。阻止jQuery遍历文档的部分
有没有办法维护一个大的DOM,但提供了一个“提示”排除某些部分。例如,我想维护DOM中的元素,但只有我的JQuery选择器适用于活动选项卡。
我希望会有某种形式的“忽略”标签的,我可以动态地应用到无源部分
也许是存储在数据字典中的活动标签元素的替代,并把他们进出的DOM,因为它们成为焦点。
我在一个大量使用Ajax请求的网站上工作,该请求在DOM中构建基于选项卡的结构。我担心的是,DOM将堆积如此多的选项卡和元素,以至于JQuery选择器最终表现不佳。阻止jQuery遍历文档的部分
有没有办法维护一个大的DOM,但提供了一个“提示”排除某些部分。例如,我想维护DOM中的元素,但只有我的JQuery选择器适用于活动选项卡。
我希望会有某种形式的“忽略”标签的,我可以动态地应用到无源部分
也许是存储在数据字典中的活动标签元素的替代,并把他们进出的DOM,因为它们成为焦点。
这是一个潜力解。我必须再去探索一下 – TGH 2012-04-22 23:55:42
只是提供一个选择器,告诉jquery你想要什么。例如,给每个标签一个id
。然后,如果你想获得的所有a
标签在news
标签:
$("#news a")
jQuery将随后只知道在#news
看。
id
查询通常非常有效,因为只有一个元素可以有给定的id
。
不,这并不总是一种选择,因为某些选择器可以在各个部分之间重复使用,而且我也没有奢侈的提供这样的粒度选择器 – TGH 2012-04-22 23:49:24
如果您不喜欢不控制代码,那么你很可能不幸运。 – 2012-04-22 23:51:50
在您的选择器上,您可以传递一个上下文作为第二个参数来告诉jquery文档的哪部分外观,比如说:这样可以减少要查找的节点数量。 参考:http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx#tip9
正如我在评论中说,你用你选择的方式取决于你的代码。但是,如果您最终选择了一个巨大的选择器列表,您可以随时使用任何规则集合filter()
。
$elements.filter(function(){
return $(this).parent('.foo').length; // Only elements with parent `.foo`
});
由于元素的数量,关注点更多的是我将要处理的搜索时间 – TGH 2012-04-22 23:53:48
你能发表一些代码吗?这取决于你想要做什么 – elclanrs 2012-04-22 23:47:19
这更多的是一个概念性问题。我正在寻找一种方法来标记DOM内容以被JQuery忽略 – TGH 2012-04-22 23:48:17
你所要求的答案基本上是 - 不!另一方面,如果它具有唯一标识符的结构,那么javascript可以在它开始成为问题之前处理一个相当大的DOM,而我的经验是浏览器渲染在此之前就会成为问题。 – adeneo 2012-04-22 23:56:32