【发布时间】:2012-08-06 15:52:08
【问题描述】:
我正在过滤一个 ASP.NET 中继器,该中继器使用 jQuery 在客户端输出超过 2000 个 div。中继器的 ItemTemplate 包含一个 div (runat="server")。在转发器 OnItemDataBound 事件中,我有一些逻辑可以根据数据应用 css 类。然后,我有一些 id 与 css 类同名的链接,因此当单击链接时,jQuery 会隐藏中继器输出的所有没有匹配 id/类组合的 div。此外,在某些情况下,div 应用了多个类。
在我单击链接过滤 div 的前 2 次左右一切正常,但随后它被挂断,变得无响应。
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>
有什么方法可以提高效率吗?是这个问题吗? 提前致谢!
【问题讨论】:
-
页面加载后
#divIssueMenu的内容有没有变化?此外,您可以通过将$(this).attr('id')替换为this.id来节省每次点击的一些函数调用。 -
divIssueMenu 的内容在中继器的输出每次回发后都会重新创建,但所有过滤都发生在客户端。谢谢,我会试试 this.id