Как заставить множественные кнопки вызывать одну и ту же функцию, когда я не знаю названий кнопок? - PullRequest
1 голос
/ 16 сентября 2011

У меня есть хранимая процедура, которая будет возвращать набор результатов с 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 Ответ

2 голосов
/ 16 сентября 2011

Дайте им все одно и то же имя класса CSS. Избегайте подключения JavaScript к идентификаторам при использовании .NET, ему нравится собирать их для себя.

Тогда вы можете использовать:

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

«это» будет относиться к нажатой кнопке:

$('.buttonClassOfYourChoice').click(function() {
     alert($(this).html())
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...