1

我正在尝试编写一些 jQuery,如果其中两个 td 包含具有某个类的元素,它将隐藏一个 tr。这是标记。

<tr>
        <td>Name<i class="icon-warning-sign"></i></a></td>
        <td class="centered_text"><i class="icon-minus"></i></td>   
        <td class="centered_text"><i class="icon-minus"></i></td>
</tr>

所以如果最后两个 td 包含i.icon-minus 隐藏 tr。我会通过向 tr 添加一个类并隐藏它来做到这一点。谁能帮我解决这个问题?

4

4 回答 4

2

我建议(目前未经测试):

$('tr').filter(function(){
    return $(this).find('i.icon-minus').length == 2;
}).hide();

JS 小提琴演示

只在最后两个单元格中搜索,或者更准确地说,只在不是第一个单元格的单元格中搜索:

$('tr').filter(function(){
    return $(this).find('td:gt(0) i.icon-minus').length == 2;
}).hide();

JS 小提琴演示

参考:

于 2012-11-19T18:51:37.510 回答
2

我会写一个像下面这样的简单过滤器,

我会通过向 tr 添加一个类并隐藏它来做到这一点。谁能帮我解决这个问题?

$('#tableId tr').filter(function () {
   return $('.icon-minus', this).length == 2;
}).addClass('hide');

或简单地说

$('#tableId tr').filter(function () {
   return $('.icon-minus', this).length == 2;
}).hide();
于 2012-11-19T18:51:44.527 回答
2

您可以将Next Adjacent 选择器:has():last-child结合使用来匹配<td>元素,然后使用最接近的()parent()来获取<tr>元素:

$("td:has(i.icon-minus) + td:has(i.icon-minus):last-child").parent().hide();
于 2012-11-19T18:57:38.203 回答
2

您可以使用.filter()函数来检查具有该类的 tr 内的 td 数量。使用 slice(-2) 将始终为您提供最后 2 个 td 的.slice()

$(function() {
    $('tr').filter(function() {
        // return the if td's returned == 2
        return $('td', this).slice(-2).filter(function() {
            // return if the last two td elements has icon-minus as class
            return $('i', this).hasClass('icon-minus');
        }).length == 2;
    }).addClass('hideThis');
});​

http://jsfiddle.net/kMGL4/

于 2012-11-19T19:12:43.733 回答