代码之家  ›  专栏  ›  技术社区  ›  Mark Allison

如何将jQuery UI按钮应用于ASP.NET中的html按钮?

  •  0
  • Mark Allison  · 技术社区  · 14 年前

    我有一个名为btnShowTradeScreenshot的按钮的GridView。GridView创建了许多按钮,我想对它应用jQuery按钮。这是我的相关GridView代码:

    <asp:GridView 
        ID="grdTrades" 
        runat="server" 
        >            
        <Columns>            
            <asp:TemplateField HeaderText="Screenshot" >
                <ItemTemplate>
                    <input name="btnShowTradeScreenshot" runat="server" visible='<%# Eval("screenshotId") != DBNull.Value %>' type="button" value='View...' onclick='<%# "ShowImageInNewPage(\"App_Handlers/ImageHandler.ashx?screenshotId=" + Eval("screenshotId") + "\")" %>' />
                </ItemTemplate>
            </asp:TemplateField>            
        </Columns>
    </asp:GridView> 
    

    我正试图使用以下代码应用jQuery:

    <script type="text/javascript">
        $(document).ready(function () { $("#<%= btnShowTradeScreenshot.ClientID %>").button(); });
    </script>
    

    什么也没发生,我得到了标准按钮,而不是jQuery按钮。当我查看页面源代码时,我注意到按钮的名称已被损坏,例如:

    ctl00$contentMain$grdTrades$ctl05$ctl03

    ctl00$contentMain$grdTrades$ctl10$ctl03

    对如何将jQuery应用到我的所有按钮有什么想法吗?

    谢谢。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Klemen Slavič    14 年前

    您可以在按钮上使用类名,而不是依赖ClientID;这样就节省了JavaScript的长度,并且不需要绑定到每个特定的控件。

    在JS中:

    // equivalent to $(document).ready(function() {
    $(function() {
      $('.customButton').button();
    });
    

    在ASP.NET中:

    <input type="button" runat="server" class="customButton" .../>
    

    另外,如果您的网格是AJAX绑定的网格,则 <input/> 将重新创建元素,您需要在网格上重新运行代码以应用样式:

    $('#<%= grdTrades.ClientID %> .customButton').button();
    
        2
  •  1
  •   Darin Dimitrov    14 年前

    尝试改用名称选择器:

    $('input[name$=btnShowTradeScreenshot]').button();
    

    或者更好地将CSS类应用于输入,然后:

    $('.button').button();
    
        3
  •  0
  •   sh54    14 年前

    创建了许多按钮,ASP将为它们生成不同的ID,以确保每个按钮都具有唯一的ID。由于$(“35;…”)旨在选择单个唯一标识的元素,因此不能使用它来选择多个按钮。

    尝试$(':button')选择所有按钮对象。或者,您可以将每个按钮的类设置为ShowTradeScreenshot,然后使用$('.ShowTradeScreenshot')选择它们。