我有以下代码:

  <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>

10-02 01:06
查看更多