【问题标题】:How to remove options from select element using jquery?如何使用 jquery 从选择元素中删除选项?
【发布时间】:2010-04-02 20:25:53
【问题描述】:

我有 n 个这样的下拉菜单:

<select id="select1">
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>

<select id="select2">
 <option>1</option>
 <option>2</option>
 <option>3</option>
</select>

具有相同的选项。所有选项都应该是唯一的,因此一旦在一个组合框中选择了该选项,就应该将其从其他组合框中删除。因此,如果用户在 select1 中选择“1”,则在 select2 中将只有选项“2”和“3”。

现在,jQuery disable SELECT options based on Radio selected (Need support for all browsers) 提供了一个不错的解决方案,但我如何修改它以使用选择而不是单选按钮?

【问题讨论】:

    标签: javascript jquery select


    【解决方案1】:

    这是你的意思吗?

    这将从#select2 中删除#select1 中的所有内容:

    $("#select2 option").each(function() {
        if($("#select1 option[value=" + this.value + "]").length)
            $(this).remove();
    });
    

    这是另一个删除所有重复项的替代方法:

    $("select").each(function() {
      var select = $(this);  
      select.children("option").each(function() {
        $('select').not(select).children("option[value=" + this.value + "]").remove();
      });
    });
    

    这会删除所有重复项,仅在找到它的第一个 &lt;select&gt; 中留下选项。​

    更新您的评论:

    $("#select1").change(function() {
     $("#select2 option[value=" + $(this).val()+ "]").remove();
    });
    

    【讨论】:

    • 谢谢,但我只需要删除选定的元素。因此,如果用户在 select1 中选择“1”,则在 select2 中将只有选项“2”和“3”。
    • @Lapa - 为此添加了一个选项,您可以在此处看到它的工作原理:jsfiddle.net/tdKUP
    • +1 删除了我的答案,因为您的回答很好:) 但我认为在您的替代方法中,您还应该使用change 而不是each
    • @Felix - 我认为这是一个渐进式下拉情况,选择 1,然后选择另一个,等等。当然,我可能是错的,只是离开了 Lapa 的评论。我有点分心,目前对这个问题很感兴趣:stackoverflow.com/questions/2566536/… :)
    【解决方案2】:

    或者,如果选择具有相同顺序的相同选项。

    $('select').change(function() {
        var selectedIndex = $(this).find(':selected').index();    
        $('select').not(this).find('option:nth-child(' + selectedIndex + ')').remove();
    )};
    

    我认为这种方式更快(但不太容易阅读)。

    【讨论】:

    • 这不像你想的那样工作:) 一旦你删除了第一个元素,顺序就不再一样了,你的索引就关闭了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2013-07-17
    相关资源
    最近更新 更多