0

一部のデータを表示するためにサードパーティのグリッドを使用していますが、生成されるマークアップを制御することはできません

以下の例では、隣接するセルに値がない行 (つまり、下の例の中央の行) の送信ボタンを非表示にしたいと考えています。

これはjQueryで可能だと思いますが、条件付きで物事を行う方法に少しこだわっています

<div id="grid">
    <table>
        <tr>
            <td>123</td><td><a href="/go/somewhere">Submit</a></td>
        </tr>
        <tr>
            <td></td><td><a href="/go/somewhere">Submit</a></td>
        </tr>
        <tr>
            <td>123</td><td><a href="/go/somewhere">Submit</a></td>
        </tr>
    </table>
<div>

何か案は?

4

3 に答える 3

1

デモ: http://jsfiddle.net/ChgMx/1/

$("#grid a").each(function(i,k){
    if($(k).parent().prev().text().length == 0) $(k).hide();
});
于 2013-02-13T15:23:49.623 に答える
1

http://jsfiddle.net/Bu5eZ/で試してみましたが、期待どおりに機能しています。

var cells = $("table tr td:first-child");

cells.each(function(i){
    if ($(this).text() === ''){
         $(this).next().find('a').hide();
    }
});
于 2013-02-13T15:17:15.117 に答える
1

jQuery メソッドを使用して、その.filter()内部に独自のロジックを挿入できます。

$('a').filter(function () {
    return $(this).closest('tr').find('td:first-child').html() === '';
}).hide();

最後に単純な連鎖.hide()

td:first-childに変更された編集により、速度が向上します。

于 2013-02-13T15:17:28.287 に答える