13

テーブルから tds のサブセットを選択したい。

インデックスが何であるかは事前に知っていますが、それらは事実上ランダムです(奇数または偶数インデックスなどではありません)。

たとえば、0 番目、5 番目、9 番目の td を選択したいとします。

indexesToSelect = [0, 5, 9];

// 1) this selects the one by one
$('table td').eq(0)
$('table td').eq(5)
$('table td').eq(9)


// 2)this selects them as a group (with underscore / lodash)
var $myIndexes = $();

_.forEach(indexesToSelect, function (idx) {
    $myIndexes = $myIndexes.add($('table td').eq(idx));
});

(2) はうまくいき、私はそれを使用していますが、jQuery を使用するより自然な方法があるかどうか疑問に思います。

.eq()インデックスの配列を渡すようなものですか? (それはうまくいきません)

// does not work
$('table td').eq([0, 5, 9])

そうでない場合は、次のような小さなプラグインを作成します.eqMulti(array)

注: これらの tds が排他的に共有するクラスはないため、クラスに基づく選択は機能しません。

4

4 に答える 4

16

.filter()私はそれをやります$.inArray()

var elements = $("table td").filter(function(i) {
    return $.inArray(i, indexesToSelect) > -1;
});

別の [より醜い] 方法は、セレクターへのマッピングです。

var elements = $($.map(indexesToSelect, function(i) {
    return "td:eq(" + i + ")";
}).join(","), "table");
于 2013-04-25T11:11:57.297 に答える
4

これを試して

   $('table td:eq(0), table td:eq(5), table td:eq(9)')
于 2013-04-25T11:10:53.960 に答える
2
$('table td').filter(':eq(' + indexesToSelect.join('), :eq(') + ')')
于 2015-03-31T03:00:01.423 に答える