Как вызвать функцию, используя 2 элемента (по классам) в КАЖДОЙ строке таблицы? - PullRequest
0 голосов
/ 17 сентября 2009

Мой примерный 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>

Ответы [ 4 ]

2 голосов
/ 17 сентября 2009

Как насчет:

var computerID = $("#ComputerID").text();

$('#gridComputerApps').children('tr').each(function() {
  var appName = $(this).find(".AppName").text();
  var licenseOutput = $(this).find(".licenseOutput").text();

  // do something with them
  yourFunc(computerID, appName, licenseOutput);
});

Будет ли это сделать?

1 голос
/ 17 сентября 2009

Есть много разных способов обхода DOM с помощью jQuery. Я бы посоветовал быть как можно более конкретным с вашими селекторами, чтобы начать, а затем работать оттуда. Вот несколько идей, которые заставят вас задуматься

$('#gridComputerApps').children('tr').each(function() {  
    var $tr = $(this);

    // all td elements in the row.
    $tr.children('td'); 

    // you could use position to get the first td
    // this is the tr element in this case(!)
    var tdFirst = $('td:first', this);

    // you could get the next td like so
    // nextAll() will get the next td, next() will only get the next sibling
    tdFirst.nextAll('td');

    // get the 3rd td element.
    $tr.children('td').get(2); 

    // get the 3rd td element as a jQuery object
    $tr.children('td').eq(2);

});
0 голосов
/ 17 сентября 2009

Как насчет этого - я ЗНАЮ, что это работает, потому что я проверял это:

var cID = $('#ComputerID').text();

$("#gridComputerApps").find("tr").each(function(){
 var license = $(this).find(".licenseOutput");
 var appname = $(this).find(".AppName");

 for (i=0;i<license.length;i++){
  yourFunction ( cID, $(license[i]).text(), $(appname[i]).text() );
 }
});
0 голосов
/ 17 сентября 2009
$("#gridComputerApps").children("tr").each(function(){
    $(this).children(".licenseOutput").each(function(){
        // do stuff with licenseOutput 
    });
    $(this).children(".AppName").each(function(){
        // do stuff with AppName
    });
});

или вы можете сделать:

$("#gridComputerApps").children("td").each(function(){
    // do stuff with each cell
});

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...