【发布时间】:2013-03-20 01:20:07
【问题描述】:
我有一个目标项目列表,以及具有项目、功能和里程碑关联的源项目。 JSFiddle
由于我的列表非常大(总共大约 4000 个元素),我将属于目标项目的源项目设置为可折叠以压缩空间并提高可读性。
示例标记:
<div class='projectscontainer'>
<div id="destarrow" class="arrow-right"></div>
<span class="item destproject unselectable" title="ID: 426">Kzax-Xrj</span>
<br>
<div class="srcprojects" style="display: block; margin-left: 30px;">
<span class="item srcproject" title="ID: 4760">Lokhxtea</span><br>
</div>
<div class="srcprojects" style="display: block; margin-left: 30px;">
<span class="item srcproject" title="ID: 4760">Zbjamjh</span><br>
</div>
<div class="srcprojects" style="display: block; margin-left: 30px;">
<span class="item srcproject" title="ID: 6034">Jeuzax-Xrjamjhxteaq</span>
<div id='arrow' class='arrow-right'></div>
<span class='item srcproject exception' title='Project'>Qiospq</span>
<div id='arrow' class='arrow-right'></div>
<span class='item srcproject exception' title='Feature'>Qiospq</span>
<div id='arrow' class='arrow-right'></div>
<span class='item srcproject exception' title='Milestone'>Muqewko</span><br>
</div>
</div>
由于我把所有源项目都折叠了,很难找到具体的源项目。
如何在 jQuery 中创建一个简单的过滤器,它可以使用输入来定位某些目标/源项目?我尝试过类似jQuery Fast Live Filter 的方法,但它似乎不适用于我的标记。
另外,由于我有 4000 个左右的源项目,因此 Destination 项目的扩展和折叠感觉有点反应迟钝(缓慢)。是否有任何修复可以应用于我现有的 jQuery(在 JSFiddle 中)来帮助解决这个问题?
【问题讨论】:
-
遍历 4000 个元素并没有那么可怕。我会强烈考虑为项目使用对象而不是 DOM 元素并在那里执行所有逻辑。当您的表示和数据是一回事时,很快就会变得非常混乱。搜索排序列表是 O(logn) (例如,二进制搜索)。即使您的列表没有排序,它仍然只是 O(n)
标签: jquery performance search