日期:2014-05-17  浏览次数:20410 次

asp.net服务器控件命名问题,和jquery 的siblings方法
asp.net制作的页面,有如下代码
HTML code

<script type="text/javascript" language="javascript">
    function ChangeDiv(link, index) {
        link = $(link);
        link.addClass("v").siblings("a").removeClass("v");
        $("#div-" + index).show().siblings("div[id|='div']").hide();
        return false;
    }
</script>

<div>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 1);" Text="问题1"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 2);" Text="问题2"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 3);" Text="问题3"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 4);" Text="问题4"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 5);" Text="问题5"></asp:LinkButton>
</div>

<div id="div-1">具体问题1</div>
<div id="div-2">具体问题2</div>
<div id="div-3">具体问题3</div>
<div id="div-4">具体问题4</div>
<div id="div-5">具体问题5</div>



希望通过点击五个linkbutton中的一个,显示div-1等五个div中的一个,其余四个隐藏。
这个代码可以实现这一功能,但有几个问题要请教:
1:$("#div-" + index).show().siblings("div[id|='div']").hide();这个代码中应该是指把div-同等级的其他几个div隐藏,但("div[id|='div']")是什么意思呢?是否是指,id中带有div三个字母的div块?
2.现在<div id="div-1">不是服务器控件,要变成服务器控件应该加 runat="server" 就可以,但发现asp.net后台的.cs文件,不认“div-1”这个控件,猜测是因为服务器控件id号不能包含“-”号。于是想把"div-1"等,改成“divD1”,代码改成如下:
HTML code

<script type="text/javascript" language="javascript">
    function ChangeDiv(link, index) {
        link = $(link);
        link.addClass("v").siblings("a").removeClass("v");
        $("#divD" + index).show().siblings("div[id|='div']").hide();
        return false;
    }
</script>

<div>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 1);" Text="问题1"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 2);" Text="问题2"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 3);" Text="问题3"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 4);" Text="问题4"></asp:LinkButton>
    <asp:LinkButton runat="server" OnClientClick="return ChangeDiv(this, 5);" Text="问题5"></asp:LinkButton>
</div>

<div id="divD1" runat="server" >具体问题1</div>
<div id="divD2" runat="server">具体问题2</div>
<div id="divD3" runat="server">具体问题3</div>
<div id="divD4" runat="server">具体问题4</div>
<div id="divD5" runat="server">具体问题5</div>


可是发现,这样改后,点击linkbutton后,其余四个div不再隐藏。请大家指教指教,这是为什么?

------解决方案--------------------
$("#divD" + index).show().siblings("div[id|='div']").hide();

那个“|”不懂什么意思 改成下面这一句应该就可以了

$("#divD"