【发布时间】:2010-06-10 19:23:21
【问题描述】:
假设你有一个 Django 视图,它有两个功能:
第一个函数使用 XSLT 样式表呈现一些 XML,并生成一个包含 1000 个子元素的 div,如下所示:
<div id="myText">
<p id="p1"><a class="note-p1" href="#" style="display:none" target="bot">✽</a></strong>Lorem ipsum</p>
<p id="p2"><a class="note-p2" href="#" style="display:none" target="bot">✽</a></strong>Foo bar</p>
<p id="p3"><a class="note-p3" href="#" style="display:none" target="bot">✽</a></strong>Chocolate peanut butter</p>
(etc for 1000 lines)
<p id="p1000"><a class="note-p1000" href="#" style="display:none" target="bot">✽</a></strong>Go Yankees!</p>
</div>
第二个函数使用另一个样式表呈现另一个 XML 文档以生成如下所示的 div:
<div id="myNotes">
<p id="n1"><cite class="note-p1"><sup>1</sup><span>Trololo</span></cite></p>
<p id="n2"><cite class="note-p1"><sup>2</sup><span>Trololo</span></cite></p>
<p id="n3"><cite class="note-p2"><sup>3</sup><span>lololo</span></cite></p>
(etc for n lines)
<p id="n"><cite class="note-p885"><sup>n</sup><span>lololo</span></cite></p>
</div>
我需要查看#myText 中的哪些元素具有与#myNotes 中的元素匹配的类,并显示它们。我可以使用以下 jQuery 来做到这一点:
$('#myText').find('a').each(function() {
var $anchor = $(this);
$('#myNotes').find('cite').each(function() {
if($(this).attr('class') == $anchor.attr('class')) {
$anchor.show();
});
});
但是,对于大量比较而言,这非常缓慢且效率低下。
最快/最有效的方法是什么 - 是否有适用于大量项目的 jQuery/js 方法?还是我需要重新设计 Django 代码来完成工作,然后再将其传递给模板?
【问题讨论】: