当我不知道按钮名称时,如何使多个按钮调用相同的功能?

时间:2011-09-15 21:30:50

标签: javascript .net html model-view-controller

我有一个存储过程,它将返回一个包含n列的结果集(存储过程的逻辑确定要返回的列),我用它来构建一个“网格”。为此,我使用我在运行时枚举的DataTable来动态构建DataColumns:

             <table>
                <thead>
                    <% foreach (System.Data.DataColumn column in ((System.Data.DataTable)Model).Columns)
                       { %>
                    <th>
                        <%: column.Caption %>
                        <input id="Image1" type="image" src="../Content/theme/images/arrowhead-down.jpg" width="9px" height="5px"/></th>
                    </th>
                    <%}%>
                </thead>
                <tbody>
                    <%
            foreach (System.Data.DataRow row in ((System.Data.DataTable)Model).Rows)
            {%>
                    <tr>
                        <% foreach (var column in row.ItemArray)
                           { %>
                        <td>
                            <%: column.ToString() %>
                        </td>
                        <%}%>
                    </tr>
                    <%
            }
                    %>
                </tbody>
            </table>

每个新列元素都将包含类型图像(按钮)的输入。基本上,该按钮将允许使用某些脚本隐藏列:

$(document).ready(function () {
            $('#Image1').click(function () {
                $('td:nth-child(3),th:nth-child(3)').hide();
            });
        });

所以我的问题是这样,我怎么能让每个新创建的按钮调用相同的功能而不管按钮的名称(因为我不知道将创建多少个按钮或它们的名字)?

1 个答案:

答案 0 :(得分:2)

给他们所有相同的CSS类名。在使用.NET时,避免将JavaScript连接到ID,它喜欢自己占用它们。

然后你可以使用:

$('.buttonClassOfYourChoice').click(function() {
      ....common click code...
})

“this”将引用被点击的按钮:

$('.buttonClassOfYourChoice').click(function() {
     alert($(this).html())
})