0

問題が見つからないという単純な問題にイライラしています。

異なる基準のために「フィルター済み」としてマークされているセルを探して、テーブルから行をフィルター処理したいと考えています。したがって、最後の行フィルタリングは、フィルタリングされたセルを「選択」して、含まれる行をフィルタリングするかどうかを決定します。

簡単な例を次に示します。

html:

<table>   <tbody>
    <tr class="">
        <td class=""><span>1-1</span></td>
        <td class=""><span>1-2</span></td>
        <td class=""><span>1-3</span></td>      
    </tr>
    <tr class="">
        <td class=""><span>2-1</span></td>
        <td class="filtered"><span>2-2</span></td>
        <td class="filtered"><span>2-3</span></td>      
    </tr>
    <tr class="">
        <td class=""><span>3-1</span></td>
        <td class="filtered"><span>3-2</span></td>
        <td class=""><span>3-3</span></td>      
    </tr>   </tbody> </table>

CSS:

table { margin: 20px; }
td { padding:4px; }
td span { background-color: silver; }
tr.filtered { display:none; }​

js/jquery:

$('table tbody tr').filter('td.filtered').addClass('filtered');

私はこれのためにフィドラーを用意しました: http://jsfiddle.net/dtsZX/3/

行 2 と行 3 に「フィルター処理」されたクラスが追加され、非表示になることが予想されます。しかし、それはうまくいきません。jquery コマンドの何が問題になっていますか?

4

3 に答える 3

5

あなたがしたい:has

$('table tbody tr:has(td.filtered)').addClass('filtered');

trs 自体が一致することはありませtdん。代わりに、子孫としてa を持つtrをフィルタリングします。td

于 2012-07-07T22:05:29.547 に答える
1

tr に「filtered」を追加する場合:

$('table tbody tr').find("td.filtered").parent().addClass("filtered")

それ以外の:

$('table tbody tr').filter('td.filtered').addClass('filtered');

http://jsfiddle.net/dtsZX/7/

于 2012-07-07T22:03:47.717 に答える
1

フィルタ メソッドは、この方法では機能しません。JQuery のドキュメントを参照してください。

Filter は実際には、メソッドのセレクターに一致する前のセレクターで選択されたアイテムを返しますfilter

これを使用してみてください:$('table tbody tr td.filtered').parent().addClass('filtered');

または:has別の回答者が言及したセレクター(jQuery 1.1.4以降を使用している場合)。

于 2012-07-07T22:05:38.070 に答える