3

多くの列を持つ幅の広いテーブルがあり、以下に追加colspan=2したいとします。

td#2, td#10, td#15

td#3, td#11, td#16

具体的に行う必要がありますか:

$("table td").eq(2).attr('colspan','2')
$("table td").eq(10).attr('colspan','2')
$("table td").eq(15).attr('colspan','2')

または、使用する必要がありますfilter()か?

もっと短い方法はありますか?

4

5 に答える 5

6

できるよ:

$("td:eq(2), td:eq(10), td:eq(15)", "table").prop('colspan',2);

最短の方法だと思います。

于 2013-01-27T16:12:35.167 に答える
4

あなたができる

$('table').find('td:eq(2), td:eq(10), td:eq(15)').prop('colspan', 2);

(私は考える.prop()代わりに使用し.attr()ますが、確認する必要があります:-)(はい、それは不動産です)

上記は機能しますが、これらの jQuery 拡張検索修飾子:eq()は、選択プロセスを遅くする可能性があることに注意してください。セルだけを選択した後、別のフィルター手順を使用する方が速い場合があります。

また、その選択 (元のコードと同様) は、テーブル全体で2 番目、10 番目、および 15 番目のセルを見つけることに注意してください。各行の 2 番目、10 番目、および 15 番目のセルのプロパティを設定したい場合は、おそらく別のものが必要になるでしょう。

于 2013-01-27T16:11:48.513 に答える
3
$("table td").filter(':eq(2), :eq(10), :eq(15)').attr('colspan',2);
于 2013-01-27T16:13:20.737 に答える
1

複数のセレクターの代わりに、関数を受け取って次のように書くattr()の形式を呼び出すことができます。

$("table td").attr("colspan", function(index) {
    return index == 2 || index == 10 || index == 15 ? "2" : undefined;
});

( prop() のセッター形式は関数の取得もサポートしており、属性は同じ名前の DOM プロパティに直接マップされるため、ここでもprop()を同様に使用できます。)colspan

于 2013-01-27T16:17:02.263 に答える
0

以下のようにコードを最適化できます。DOM にジャンプして$("table td")3 回検索するのではなく、それを変数にキャッシュして使用します。

var td = $("table td");

td.eq(2).attr('colspan',2);
td.eq(10).attr('colspan',2);
td.eq(15).attr('colspan',2);

それ以外の場合は、次のようなことができます

$("td:eq(2), td:eq(10), td:eq(15)", "table").attr('colspan',2);

そうしないと

$("table").filter('td:eq(2), td:eq(10), td:eq(15)').attr('colspan',2);
于 2013-01-27T16:13:58.553 に答える