Мой примерный HTML:
<div id='ComputerID'></div>
<table id='gridComputerApps'>
<tr>
<td><div class='licenseOutput'/></td> <td><div class='AppName'>IE6</div></td>
<td><div class='licenseOutput'/></td> <td><div class='AppName'>Firefox</div></td>
<td><div class='licenseOutput'/></td> <td><div class='AppName'>SuperApp #2</div></td>
</tr>
</table>
(Обратите внимание, что здесь могут быть и другие столбцы, поэтому я хочу выбрать имя класса).
Итак, используя jQuery, я должен действовать для каждой строки в этой таблице.
Для каждой строки я должен передать: ('#ComputerID'). Val (), ('.AppName'). Val () и ('.licenseOuput') в функцию javascript, которая затем использует значения для ComputerID и AppName, устанавливает текст и цвет элемента licenseOutput.
Итак, я думаю, что начиная с может сработать следующее:
$('#gridComputerApps').children('tr').each(function() {
//so, do I now have access to all the ,tr> elements within #gridComputerapps?
//now, how do i select the subordinate elements, for each row???
});
РЕШЕНИЕ
Вот что наконец-то сработало для меня:
$('#gridComputerApps tr').each(function() {
var networkUserID = $("#PrimaryUserNetworkID").text();
var appName = $(this).find(".AppName").text();
var licenseOutputCell = $(this).find(".licenseOutput");
if (appName != '') CheckAppSecForUser(licenseOutputCell, appName, networkUserID);
});
Важное замечание для пользователей asp.net :
Из того, что я могу сказать, установка ControlStyle-CssClass = "AppName" в asp BoundField бесполезна, и имя класса никогда не выводится в html.
Вместо этого мне пришлось создать поле шаблона и обернуть ограниченное поле в div, например, так:
<asp:TemplateField HeaderText="Application Name" Visible="True" HeaderStyle-Width="15%" ItemStyle-VerticalAlign="Top">
<ItemTemplate><div class="xxxAppName"><%#Eval("Application.NormalizedAppName")%></div></ItemTemplate>
</asp:TemplateField>