1

2 つの td に特定のクラスの要素が含まれている場合に tr を非表示にする jQuery を作成しようとしています。これがマークアップです。

<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>

したがって、最後の 2 つの td にi.icon-minus が含まれている場合は、tr を非表示にします。trにクラスを追加して非表示にすることでこれを行います。誰でもこれで私を助けることができますか?

4

4 に答える 4

2

Next Adjacent セレクター:has()および:last-childと組み合わせて<td>要素に一致させてから、 closest()または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 に答える
2

私はお勧めします(現在テストされていません):

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

JS フィドルのデモ

最後の 2 つのセルのみを検索するには、より正確には、最初ではないセルのみを検索するには:

$('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 に答える