jquery .each函数检查另一个选择器并删除重复项

时间:2011-09-09 20:24:51

标签: javascript jquery datatables


我有一个包含名称和计数数据的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的名称?我能够检索所有john名称的位置如下:

 $('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")"));作为测试,但不断获取空值。

此外,一旦检索到数据,我将如何删除所有重复项并且jus会留下一条记录?非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以获取包含“john”的单元格,然后将该结果过滤为仅包含下一个元素中包含“4”的结果:

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

注意::contains选择器进行部分匹配,因此它也匹配例如“johnny”。如果这是一个问题,您也可以将该检查放入过滤器中:

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

答案 1 :(得分:0)

1)您在选择器的内部和外部使用双引号。考虑一下:':contains("1")'

2)您需要逐个指定选择器不含空格

'.count:contains("1")'