我有一张酒店的预订表格,客户可以选择与谁分享房间。 每行代表一个访客姓名,并有一个下拉菜单(),其中包含所有其他访客的ID号作为选项。
当第一行中的访客决定与guest id = 3共享一个房间时,我想要行下拉框以显示3,第3行显示一个,所有其他行要删除1和3个选项来自他们的选择框。
我有以下代码,但是.not(this),没有用,任何关于为什么会受到热烈赞赏的指示。
这是表格
<?php
for($a=0;$a<15;$a++)
{
echo "
<tr id=".($a+1)."><td>".($a+1)."</td>
<td><select name='title[]'>
<option value='Ms'>Ms</option>
<option value='Mrs'>Mrs</option>
<option value='Mr'>Mr</option>
<option value='Dr'>Dr</option>
</select></td>
<td><input type='text' name='firstname[]' size='10'></td>
<td><input type='text' name='lastname[]' size='10' ></td>
<td><input type='text' name='email[]'></td>
<td><input type='text' name='passport_no[]'></td>
<td><input type='date' name='dob[]' size='10'></td>
<td><select name='room_pref[]' class='room_pref'>
<option value='TWIN'>twin</option>
<option value='DOUBLE'>double</option>
<option value='SINGLE'>single</option>
</select></td>
<td><select name='share_w[]' class='share'>";
for($b=1;$b<16;$b++)
{
echo "<option value=".$b.">".$b."</option>";
}
echo "<option value ='ALONE'>Alone</option>
</select></td>
<td><input type='text' name='diet[]'></td>
<td><input type='text' name='allergies[]'></td>
</tr>";
&GT;
这是我的jquery
$('.share').change(function(){
var shareW=$(this).val();
$(".share option[value="+shareW+"]").not(this).remove();
}):
答案 0 :(得分:3)
this
此处表示select
而不是option
,您不需要在.share
集合上申请,也不能在option
上申请。
尝试
$(".share").not(this).children("option[value="+ this.value +"]").remove();
您还可以避免在点击处理程序中反复创建.share
集合。
var $share = $('.share');
$share.change(function(){
$share.not(this).children("option[value="+ this.value +"]").remove();
});