【发布时间】:2014-06-11 07:25:27
【问题描述】:
例如,我在一个页面上有 4 个无序列表:
<div class="UL-GROUP">
<div>
<ul class="UL">
<li><a href="#something1"></a></li>
<li><a href="#something2"></a></li>
<li><a href="#something2"></a></li>
<li><a href="#something3"></a>
<div class="UL-GROUP">
<div>
<ul class="UL">
<li><a href="#something4"></a></li>
<li><a href="#something5"></a></li>
<li><a href="#something6"></a></li>
<li><a href="#something7"></a>
<div class="UL-GROUP">
<div>
<ul class="UL">
<li><a href="#something8"></a></li>
<li><a href="#something9"></a></li>
<li><a href="#something10"></a></li>
<li><a href="#something11"></a></li>
</ul>
<div class="contents">Loads of elements in here</div>
</div>
</div>
</li>
</ul>
<div class="contents">Loads of elements in here</div>
</div>
</div>
</li>
</ul>
<div class="contents">Loads of elements in here</div>
</div>
</div>
<div class="UL-GROUP">
<div>
<ul class="UL">
<li><a href="#something12"></a></li>
<li><a href="#something13"></a></li>
<li><a href="#something14"></a></li>
<li><a href="#something15"></a></li>
</ul>
<div class="contents">Loads of elements in here</div>
</div>
</div>
我需要遍历所有这些,然后跟踪 4 个 UL 中的哪一个包含与特定键匹配的链接,即“#something4”...
我似乎无法找出独立有效地迭代这些内容的最佳方法,同时跟踪哪个 UL 包含匹配的键值。至少在没有使用 .children 的一些非常丑陋的链接的情况下(参见下面的 jQuery 代码)。那么我应该如何考虑性能呢?
注意:嵌套层级和 HTML 结构将保持不变,但这不是针对像导航元素这样简单的东西,内容将作为 .UL 元素的兄弟元素混入其中,我也在尝试这样做避免
JS:
console.log($('.UL-GROUP').children('div').children('.UL').find('a[href*="#something4"]'))
编辑澄清: 我想简化这一点,但使用下面的代码我变得卡住/不确定我将如何跟踪哪个 .UL-GROUP 具有我正在寻找的密钥(即使用 .data):
$('.UL-GROUP > div > ul > li').length
【问题讨论】:
标签: jquery performance jquery-traversing