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

remove option from all select boxes of the same class except the one clicked

本文关键字:选项 单击 一类 有选择      更新时间:2024-06-14

我有一张酒店预订表,客户可以在其中选择与谁共享房间。每行代表一个来宾名称,并有一个下拉菜单(),其中包含所有其他来宾的id号作为选项。

当第一行中的客人决定与客人id=3共享房间时,我希望第一行下拉框显示3,第三行显示1,所有其他行的选择框中都删除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>";

?>

这是我的jquery

$('.share').change(function(){
    var shareW=$(this).val();
    $(".share option[value="+shareW+"]").not(this).remove();
}):

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