14

私は次のような配列を持っています

var values = ['1','3','4','5'];

チェックボックスのリストがあります

<div id='list'>
    <input type='checkbox' value='1' />
    <input type='checkbox' value='2' />
    <input type='checkbox' value='3' />
    <input type='checkbox' value='4' />
    <input type='checkbox' value='5' />
    <input type='checkbox' value='6' />
    <input type='checkbox' value='7' />
    <input type='checkbox' value='8' />
    <input type='checkbox' value='9' />
    <input type='checkbox' value='10' />
</div>

今、値が配列値内にあるチェックボックスを選択したいと思います。私はこれをやった

for(var i = 0; i < values.length; i++)
    $("#list [value=" + values[i] + "]").attr("checked", "checked");

正常に動作していますが、for ループなしで実行できますか。

ヘルパーに事前に感謝します。

4

4 に答える 4

26

試す

$("#list").find('[value=' + values.join('], [value=') + ']').prop("checked", true);

デモ:フィドル

于 2013-09-04T13:15:59.297 に答える
9

単一の結合セレクターを使用すると、これをさらに簡潔に行うことができます。

$('#list [value="'+values.join('"],[value="')+'"]').prop('checked',true);

次のようなセレクターを生成します。

$('#list [value="1"],[value="3"],[value="4"],[value="5"]')

http://jsfiddle.net/mblase75/jgqm4/

于 2013-09-04T13:11:31.480 に答える
2

以下のように使用できますが、ループfilterと同じです..for

$('#list :checkbox').filter(function () {
    return $.inArray(this.value, values) >= 0;
}).prop('checked', true);
于 2013-09-04T13:11:20.087 に答える
1

for ループを $.each に置き換えることができます

JQuery

$.each(values, function() {
  $("#list [value=" + this + "]").attr("checked", "checked");
});
于 2013-09-04T13:12:33.710 に答える