1

次の表を考えると

<table id="t1" border="1">
  <thead><tr><th>A</th><th>B</th><th>C</th></tr></thead>
  <tfoot><tr><td>0</td><td>1</td><td>2</td></tr></tfoot>
<tbody>
  <tr><td>3</td><td>4</td><td>5</td></tr>
  <tr><td>6</td><td>7</td><td>8</td></tr>
  <tr><td>9</td><td>10</td><td>11</td></tr>
  <tr><td>12</td><td>13</td><td>14</td></tr>
  <tr><td>15</td><td>16</td><td>17</td></tr>
</tbody>
</table>

1列目と3列目のみを選択したい<tbody>。巨大なテーブルでは、複数の列の選択が異なる場合があることに注意してください。次の式は、この例の正しい選択を返します。

var a = $('#t1 tbody tr td:nth-child(1), #t1 tbody tr td:nth-child(3)')

しかし

var b = $('#t1 tbody tr td:nth-child(1), td:nth-child(3)')

b返品選択含む<tfoot>。さらにb結果については、最初の要素がありませんか?!

var a上記の X 数の列を選択する最も簡単な方法は何ですか。例えば:

Select columns [1,4,5,6,7,8,9]

http://jsfiddle.net/kkgian/4kdNt/2/

ティア

4

2 に答える 2

1

同じ行で複数の列を選択する場合:

$('#t1 tbody tr').find("td:nth-child(1), td:nth-child(3)");

一定間隔で列を選択する場合:

$('#t1 tbody tr td:nth-child(3n)'); //should get column 3, 6, 9, ...

その結果として、1から始まる他のすべての要素(あなたの場合は1と3)を取得するには:

$('#t1 tbody tr td:nth-child(2n+1)'); //should get column 1, 3, 5, ...

列[1,4,5,6,7,8,9]を選択する場合:

var cols = [1,4,5,6,7,8,9];
$('#t1 tbody tr td').filter(function(idx) {
    return $.inArray(idx+1, cols)!=-1;
});

.filter()は、一致した要素のセットを使用したい要素(この場合は配列で指定された列インデックス)に減らすための方法です。式が返す値はすべてtrue含まれます。注: idx内.filter()は0ベースであるため、配列の値が1ベースであることが意図されている場合は、1を追加します。

于 2012-07-19T06:44:43.403 に答える
0
var arr = [1, 4, 5, 6, 7, 8, 9],
    rows = $('#t1 tbody tr'),
    tds = $('td', rows).map(function() {
        if ( $.inArray($(this).index(), arr) >= 0)
            return this;
    });

デモ

于 2012-07-19T07:16:09.523 に答える