2

私のフォームでは、配列内の存在に基づいて2種類のクラスを適用する必要があります。そのためには、どのようにフィルタリングしますか?

これは私の試みです:

<form>

    <input type="checkbox" value="one" />
    <input type="checkbox" value="two" />
    <input type="checkbox" value="three" />
    <input type="checkbox" value="four" />
    <input type="checkbox" value="five" />

</form>

var names = ["one","two","three"];


$(":checkbox", "form").filter(function(){
    return $(this).val() === names
}).addClass("blue")

$(":checkbox", "form").filter(function(){
    return $(this).val() !== names
}).addClass("green")

しかし、うまくいきません..それを成し遂げるための正しい方法

ここにフィドルがあります

4

1 に答える 1

3

配列名が値と等しいのではなく、入力値が配列に存在するかどうかを確認する必要があります。そのために$.inArrayを使用できます。配列でアイテムが見つかった場合はアイテムのインデックスを返します。それ以外の場合は -1

$("form :checkbox").filter(function(){
    return $.inArray(this.value, names) > -1
}).addClass("blue")

$("form :checkbox").filter(function(){
    return $.inArray(this.value, names) == -1
}).addClass("green")

デモ:フィドル

または

var names = ["one","two","three"];

$("form :checkbox").addClass(function(){
    return $.inArray(this.value, names) > -1 ? 'blue' : 'green'
})

デモ:フィドル

于 2013-06-27T08:01:28.157 に答える