除了单击之外,从同一类的所有选择框中删除选项

时间:2013-12-09 23:15:13

标签: javascript jquery

我有一张酒店的预订表格,客户可以选择与谁分享房间。 每行代表一个访客姓名,并有一个下拉菜单(),其中包含所有其他访客的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();
}):

1 个答案:

答案 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();
});