0

チェックボックスの値を取得するボタンを押したときに複数の要素を非表示にしたいのですが、チェックボックスがチェックされている場合は非表示です。

次のコードがありますが、最初の要素でのみ機能します

var checkedInputs = $("input:checked");
var test = "";
$.each(checkedInputs, function(i, val) {
    test += val.value+",";
});
test = test.substring(0,(test.length-1));
$("#numRow"+test).hide('slow'); // it should to hide multiple elements, but just work with the first value

配列も試しましたが、うまくいきません。

var numMsj =[1, 2, 4, 22, 44,90, 100];    
$.each(numMsg, function (ind, elem) { 
    $("#numRow"+elem).hide('slow');
});
4

1 に答える 1

3

修正されたソリューション

hide を each ループの中に入れるだけです:

var checkedInputs = $("input:checked");
$.each(checkedInputs, function(i, val) {
    test += val.value+",";
    $(this).hide('slow');
});

これが実際の例です


ワンライナー

testまたは、変数がまったく必要ない場合は、1 行で実行できます。

$("input:checked").hide('slow');

これがその例です


あなたの試みの問題

参考までに、最初の例が機能しない理由は、セレクターが次のようになるためです。

$("#numRow1,2,4")

これは、 id を持つ最初の要素を選択し、次にandnumRow1と呼ばれるタグを選択しますが、これは存在しません。次のようなセレクターを作成します。24

$("#numRow1,#numRow2,#numRow4")

ただし、これは単なる例であり、上記の代替方法ははるかに優れたアプローチです。

numMsj2 回目の試行の問題は、との間の単純なタイプミスnumMsgです。

于 2013-10-03T13:17:08.557 に答える