0

チェックボックスで要素にクラスを追加し、同時に値を配列にプッシュしています。ユーザーが要素をもう一度クリックすると、配列からクラス名と値が削除されます。次の関数を使用しました。

var sv = [];

    $(userLocales).click(function(){

                    $(this).parent().toggleClass("red");
                    var elementValue = $(this).val();

                    if($.inArray(elementValue, sv) === -1 ){
                        sv.push(elementValue)
                        console.log("add");//works
                    } else{
                         $.grep(sv, function (value) {
                            return value != elementValue;
                        });
                         console.log("remove");//works..
                    }

                    console.log(sv);//always getting the value
                })

問題は何ですか?どんな助けでも大歓迎です。

4

3 に答える 3

2

まだjQueryソリューションを探している場合は、elseブロックを更新してください:

sv = $.grep(sv, function (value) {
   return value != elementValue;
});

(JSFiddle: http://jsfiddle.net/PKCES/ )

jQuery ドキュメント: http://api.jquery.com/jQuery.grep/

于 2013-06-27T06:19:35.610 に答える
1

あなたのelse句でこれを行います

var index = sv.indexOf(elementValue);
sv.splice(index, 1);
于 2013-06-27T06:16:57.560 に答える
0
...
} else{
    sv.splice( $.inArray(elementValue, sv), 1 );
    console.log("remove");//works..
}
...
于 2013-06-27T06:15:18.697 に答える