jQueryを使用して、クライアント側で2000divを超える出力を行うASP.NETリピーターをフィルタリングしています。リピーターのItemTemplateは、div(runat = "server")を保持します。リピーターのOnItemDataBoundイベントでは、データに従ってcssクラスを適用するロジックがいくつかあります。次に、cssクラスと同じ名前のidを持つリンクがいくつかあるので、リンクをクリックすると、jQueryは、一致するid/クラスコンボを持たないリピーターによって出力されたすべてのdivを非表示にします。また、divに複数のクラスが適用されている場合もあります。
最初の2回ほどはリンクをクリックしてdivをフィルタリングしますが、その後ハングアップして応答しなくなります。
jQuery:
$(document).ready(function () {
$('#filters a').click(function (e) {
e.preventDefault();
if ($(this).attr('id') == 'all') {
$('#divIssueMenu').children().show();
}
else {
var filter = $(this).attr('id');
$('#divIssueMenu').children().show();
$('#divIssueMenu').children().not('.' + filter).hide();
}
});
});
そして出力されたマークアップ:
<div id='filters'>
<a href='#' id="all" >All</a> |
<a href='#' id='filter1'>Filter 1</a> |
<a href='#' id='filter2'>Filter 2</a> |
<a href='#' id='filter3'>Filter 2</a> |
and so on...
<div class='clear'></div>
</div>
<div id="divIssueMenu">
Menu
<div id="rpMenu_divMenu_0" class="filter1">
data here...
</div>
<div id="rpMenu_divMenu_1" class="filter2">
more data...
</div>
<div id="rpMenu_divMenu_2" class="filter1 filter2">
more data...
</div>
<div id="rpMenu_divMenu_3" class="filter1 filter2 filter3">
more data...
</div>
and so on, about 2000+ records...
</div>
これをより効率的にする方法はありますか?それが問題ですか?前もって感謝します!