Предположим, у вас есть представление Django, которое имеет две функции:
Первая функция визуализирует некоторый XML с использованием таблицы стилей XSLT и создает div с 1000 подэлементами, например так:
<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, чтобы выполнить работу, прежде чем передавать его в шаблон?