私はテーブルを持っています。各セルの中には、非常に多くのドロップダウンリストがあります。列の数は異なる場合があります。また、ドロップダウンリストの内容は各行で同じです。私が欲しいのは、1つのドロップダウンリストから値を選択するとき、その値を同じ行の他のすべてのドロップダウンリストから削除する必要があることです。
これが私のテーブルです
<table>
<tbody>
<tr class="row">
<td>
<select>
<option value="1">Option 1 of row 1</option>
<option value="2">Option 2 of row 1</option>
<option value="3">Option 3 of row 1</option>
</select>
</td>
<td>
<select>
<option value="1">Option 1 of row 1</option>
<option value="2">Option 2 of row 1</option>
<option value="3">Option 3 of row 1</option>
</select>
</td>
.....
.....
<tr>
<tr class="row">
<td>
<select>
<option value="a">Option a of row 2</option>
<option value="b">Option b of row 2</option>
<option value="c">Option c of row 2</option>
</select>
</td>
<td>
<select>
<option value="a">Option a of row 2</option>
<option value="b">Option b of row 2</option>
<option value="c">Option c of row 2</option>
</select>
</td>
.....
.....
<tr>
</tbody>
</table>
したがって、「行1のオプション1」を選択すると、他のすべてのドロップダウンリストからそのオプションを削除する必要があります。jqueryを使用してこれを達成するにはどうすればよいですか?
編集:
また、ユーザーがすでに選択されているドロップダウンから別の値を2回選択した場合は、以前に置き換えられたオプションを復元する必要があります
編集2:
jquery idセレクターを使用して、行に対してこれを行う方法を理解しました。クラスセレクターを使用して、すべての行を反復処理するにはどうすればよいですか?以下は単一行コードです
$('#row_id td select').change(function(){
var values = [];
$('#row_id td select').each(function(){
if(this.value.length > 0)
values.push(this.value);
});
$('#row_id td select option').each(function(){
if($.inArray(this.value, values) > -1 && !this.selected)
$(this).attr("disabled","disabled");
else
$(this).removeAttr("disabled");
});
});
$('#row_id td select').change();//triggers initial change