我有以下代码:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<script src="Js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#propertyimage").mouseover(function () {
$("#lnkedit").hide();
});
$("#propertyimage").mouseout(function () {
$("#lnkedit").show();
});
});
</script>
<div class="ddldemo">
<asp:Repeater ID="rptproperty" runat="server">
<ItemTemplate>
<div style="width: 165px;">
<asp:Image ID="propertyimage" runat="server" ImageUrl='<%#Eval("image1") %>'" />
<asp:LinkButton runat="server" ID="lnkedit" Text="Edit"></asp:LinkButton>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</asp:Content>
所有代码都在内容占位符中
当我将鼠标移到图像按钮时,不会隐藏/显示。
我该如何解决?
最佳答案
当ItemTemplate中有控件时,您将无法执行此操作。控件的唯一客户端ID不会是#propertyimage。不能这样,因为您可以有多个具有相同按钮名称的用户控件。 ASP.Net将生成与控件树相关的唯一ID。在这种情况下,由于您处于中继器控件中,并且无法使用具有相同客户端ID的多个控件,因此无法获取clientid。
您可以通过类来做到这一点。这是一个example I put together on jsFiddle。它使用一个类来标识转发器,然后使用jquery的next()方法选择下一个锚元素并显示/隐藏它。尝试像这样更改代码:
<script src="Js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".propertyImage").mouseover(function () {
$(this).next("a").hide();
});
$(".propertyImage").mouseout(function () {
$(this).next("a").show();
});
});
</script>
<div class="ddldemo">
<asp:Repeater ID="rptproperty" runat="server">
<ItemTemplate>
<div style="width: 165px;">
<asp:Image ID="propertyimage" class="propertyImage" runat="server" ImageUrl='<%#Eval("image1") %>'" />
<asp:LinkButton runat="server" ID="lnkedit" Text="Edit"></asp:LinkButton>
</div>
</ItemTemplate>
</asp:Repeater>
</div>