晚上好,
我在动态选择中遇到了一个小问题,就像标题中已经说过的那样。我的目标是达到以下结果:
如果有人从第一个选择标签中选择了一种乐器,则另一个名为“ Besetzung”的标签应过滤出演奏所选乐器的用户列表,如第二个选择标签所示。
screenshot
(乐器=乐器; E-Bass =电贝司; Besetzung =职业; Offen =打开)

到目前为止,这工作正常。但是我的问题是,我得到了3到10个这样的蓝色框(截图)。您可以在按钮上手动添加这些框。而且每个单独的盒子都应包含这些“单独的”选择标签...因此,每次添加一个盒子时,我需要为每个选择标签提供唯一的ID。到目前为止,这是我用于动态选择的功能:

function fetch_select(val)
{
    $.ajax({
     url: 'get_data.php',
     type: 'POST',
     data: {
        get_option:val.value
     },
     success: function (response) {
       document.getElementById("studentSelect").innerHTML=response;
     }
  });
}


如果函数执行成功,则ID为“ studentSelect”的元素将被更改。但是我需要的是一个类似数组的东西,在我的html,php和ajax中使用它来更改每个元素...我不知道如何给每个单独的select标签一个唯一的ID,因为标签的数量会在有人使用网站时进行更改。

希望您能理解我的意思,对我来说有点难以解释。
感谢您的任何帮助。

最佳答案

通常,您将对所有涉及的元素使用一个通用类。

然后,在更改事件中,您可以获取已更改的选择类的特定实例,并使用该实例遍历到相应的其他选择以进行填充

重复结构

<div class="row">
   <select class="select-1"></select>
   <select class="select-2"></select>
</div>


JS

$(document).on('change', '.select-1', function(){
   // traverse to closest row, then look within that row for matching select
   var $otherSelect = $(this).closest('.row').find('.select-2');
    $otherSelect.load('get_data.php', {get_option: this.value})
            .fail(function(){ alert('Oops something went wrong')});
});

09-25 16:36
查看更多