0

我希望通过 id 选择跟随元素toggleThisDiv。标记看起来像:

 <li id="liCategory" runat="server">
       <asp:HyperLink ID="lnkCategory" runat="server">
       <span><asp:Literal ID="litCategory" runat="server" Visible="true" /></span>
       <asp:Image ID="imgMan" runat="server" Visible="false" /></asp:HyperLink>
       <asp:Button ID="btnToggleDiv" runat="server" Text="+" Visible="false" />
 </li>

 <div id="toggleThisDiv" runat="server" style="display:none;margin-top:-16px;">

和 jQuery:

$(document).ready(function () {
        $('[id*="btnToggleDiv"]').click(function () {
            $(this).next().slideToggle(100);
            return false;
        });
    });

这在按钮位于列表项之外时有效,但这都在中继器内,如果我这样离开,所有创建的按钮将彼此相邻,而不是在其关联的列表项中。

我正在 jQuery 中寻找可以让我选择下一个 div (toggleThisDiv) 的东西,这可能吗?

谢谢

4

2 回答 2

1

如果生成将使用相同标识符的元素,请使用唯一 ID 或类。

要定位单击元素的当前父元素之外的元素,您可以找到与选择器匹配的最近的父元素,然后是下一个元素等。

$(document).ready(function () {
   $('[class*="btnToggleDiv"]').on('click', function () {
       $(this).closest('li').next('div').slideToggle(100);
       return false;
   });
});
于 2012-10-02T11:19:09.890 回答
0

使用类似这样的东西来选择 toggleThisDiv

$('#<%= toggleThisDiv.ClientID %>')

当网站从您的 asp 代码生成时,您的 ID 将与您提供的不同。这是因为它们在服务器上运行。每当您使用 runat 服务器时,请使用上述格式查找生成的 ID。

不过,您应该在内部使用一个类来转发器。

于 2012-10-02T11:17:27.467 回答