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" + index).show().siblings("div[id^='div']").hide();