asp.net服务器控件命名问题,和jquery 的siblings方法

aaa6263 2012-09-25 03:46:02
asp.net制作的页面,有如下代码

<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”,代码改成如下:

<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不再隐藏。请大家指教指教,这是为什么?
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaa6263 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
|= 终于帮你找到是什么意思了

http://julying.com/jQuery-1.6-api/#p=attribute-contains-prefix-selector
[/Quote]

太谢谢了
风2013 2012-09-25
  • 打赏
  • 举报
回复
|= 终于帮你找到是什么意思了

http://julying.com/jQuery-1.6-api/#p=attribute-contains-prefix-selector
风2013 2012-09-25
  • 打赏
  • 举报
回复
$("#divD" + index).show().siblings("div[id|='div']").hide();

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

$("#divD" + index).show().siblings("div[id^='div']").hide();
aaa6263 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
服务器控件 Id 不是这么找的

$("$("#<%=divD1.ClientID %>") 这个才是找服务器控件的Id

干嘛要在div上加服务器标记 在div里面在套一个服务器label不就可以了吗 你也不需要改js代码
<div id="divD1" ><asp:Label runat="server" id="" >具体问题1<asp:Label></div>
<div ……
[/Quote]

谢谢
可是现在的问题是
即便没有改成服务器控件
只是吧div-1改成divD1也不能隐藏,不知为何?

<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">具体问题1</div>
<div id="divD2">具体问题2</div>
<div id="divD3">具体问题3</div>
<div id="divD4">具体问题4</div>
<div id="divD5">具体问题5</div>


这样也不能隐藏了,求助啊
风2013 2012-09-25
  • 打赏
  • 举报
回复
服务器控件 Id 不是这么找的

$("$("#<%=divD1.ClientID %>") 这个才是找服务器控件的Id

干嘛要在div上加服务器标记 在div里面在套一个服务器label不就可以了吗 你也不需要改js代码
<div id="divD1" ><asp:Label runat="server" id="" >具体问题1<asp:Label></div>
<div id="divD2" ><asp:Label runat="server" id="" >具体问题2<asp:Label></div>
<div id="divD3" ><asp:Label runat="server" id="" >具体问题3<asp:Label></div>
<div id="divD4" ><asp:Label runat="server" id="" >具体问题4<asp:Label></div>
<div id="divD5" ><asp:Label runat="server" id="" >具体问题5<asp:Label></div>



aaa6263 2012-09-25
  • 打赏
  • 举报
回复
继续求助中
aaa6263 2012-09-25
  • 打赏
  • 举报
回复
求帮助

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧