读书人

js获取repeater的行数解决办法

发布时间: 2013-07-26 11:27:42 作者: rapoo

js获取repeater的行数
我有一个repeater
其中每行都有2个div a和b
现在要在前台实现点击a或者b可以互相交替显示。比如点击div a 显示div b 点击div b显示div a这样交替。(只有一个div显示。另一个不显示或者说隐藏掉)

问题来了
创建repeater时候,用奇偶行模板,每行的div a 和div b都是相同的id。
如:


<asp:Repeater ID="rp" runat="server">
<HeaderTemplate >
<table>
<tr>
<td >11</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><div id="a" onclick ="viewdivb()">内容</div> <div id="b" onclick ="viewdivb()">内容</div></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td><div id="a" onclick ="viewdivb()">内容</div> <div id="b" onclick ="viewdivb()">内容</div></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>



但是实际效果是,无论点击哪一行,都只在第一行显示交替。而不是所在行。比如点击第2行中的div,却在第一行的diva和b之间交替。点击低3行也是。。。第n行也是。。永远都在第一行。
不知道如何用js实现判断我点击的是哪个行中的div,在所在行进行交替。
用了比较多的方法。比如判断div 的状态。但是都是失败了。
请教
[解决办法]
id全部换为name="a"或"b"
$(function(){


$("a[name='a'][name='b']").click(function(){
$(this).hide();
if($(this).attr("name")=="a"){
$(this).next().show();
}else
{
$(this).prev().show();
}
});
});
[解决办法]
$('table').find('div').removeAttr('onclick').eq(0).click(viewdivb).eq(1).click(viewdiva);
[解决办法]

$('table').find('tr').removeAttr('onclick').each(function() {
$(this).find('div').eq(0).click(viewdivb);
$(this).find('div').eq(1).click(viewdiva);
});

或者

$('table').find('div').removeAttr('onclick').filter('even').click(viewdivb).filter('odd').click(viewdiva);

读书人网 >JavaScript

热点推荐