Функция jquery .each для проверки другого селектора и удаления дубликатов - PullRequest
1 голос
/ 10 сентября 2011

У меня есть таблица данных jquery, которая содержит данные об имени и количестве.

                <tr>
                    <th>Name</th>
                    <th class="count">Count</th>
                </tr>
              </thead>
            <tbody>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>               
              <td class= "name"><%# Eval("Name") %></td>
              <td class= "count"><%# Eval("count") %></td>             
            </tr>

Проблема, с которой я сталкиваюсь, пытается получить данные, которые соответствуют определенным критериям на основе 2 селекторов . Например, как мне написать функцию jquery для получения имен, которые являются "john" и имеют счетчик 4? Я могу восстановить позиции, где все имена, которые являются Джон, следующим образом:

 $('td').each(function () {        
         var aPos = oTable.fnGetPosition(this);
         var aData = oTable.fnGetData(aPos[0]);
         var retrievedEntry = aData[aPos[1]];

         if (retrievedEntry == "john") {
             alert($(this).html() + "found at position " + aPos);
         }
 });

Я попробовал alert($(this).find(".count").filter(":contains("1")")); в качестве теста, но продолжаю получать нулевые значения.

Кроме того, после извлечения данных, как мне удалить все дубликаты и оставить одну запись? Ваша помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Вы можете получить ячейки, содержащие «john», а затем отфильтровать полученный результат, чтобы в нем содержались только ячейки с «4» в следующем элементе:

$('td.name:contains(john)').filter(function(){ return $(this).next().text() == '4'; })

Примечание. Селектор :containsделает частичное совпадение, поэтому оно также будет соответствовать, например, "Джонни".Если это проблема, вы должны поставить эту проверку в фильтр также:

$('td.name').filter(function(){ return $(this).text() == 'john' && $(this).next().text() == '4'; })
0 голосов
/ 10 сентября 2011

1) Вы используете двойные кавычки внутри и снаружи селектора.Рассмотрим: ':contains("1")'

2) Вам необходимо указать селекторы один за другим без пробелов

'.count:contains("1")'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...