我有一个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 的状态。但是都是失败了。
请教

解决方案 »

  1.   

    id不要写成一样的吧,这样js用id取dom的时候会出现问题的
      

  2.   

    即使不一样。那也只是奇偶数行不通啊。所有奇术行和偶数行中的div a和b的id还是一样的啊。
    那么实际效果就是,不管点击奇数行中哪一样行diva或者b 都只会在奇数行的第一行交替。
    不管点击偶数行中哪一样行diva或者b 都只会在偶数行的第一行交替。
      

  3.   

    把id改成class,然后根据“previousSibling”“nextSibling”找出标签进行操作。
    用jquery比较方便。
      

  4.   

    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();
           }
       });
    });
      

  5.   

    $('table').find('div').removeAttr('onclick').eq(0).click(viewdivb).eq(1).click(viewdiva);
      

  6.   

    $('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);