Jquery通过ID选择li之外的元素

时间:2012-10-02 11:06:23

标签: c# jquery asp.net toggle

我希望按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;
        });
    });

当按钮位于listitem之外时,这可以工作,但这都在转发器中,如果我这样做,所有创建的按钮将彼此相邻而不是在其关联的列表项中。

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

三江源

2 个答案:

答案 0 :(得分:1)

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

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

$(document).ready(function () {
   $('[class*="btnToggleDiv"]').on('click', function () {
       $(this).closest('li').next('div').slideToggle(100);
       return false;
   });
});

答案 1 :(得分:0)

使用类似的方法选择toggleThisDiv

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

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

你应该在里面使用一个类来转发器。