【问题标题】:Hide the selected option in select dropdown list在选择下拉列表中隐藏选定的选项
【发布时间】:2023-03-05 12:10:01
【问题描述】:
<select>
   <option>Jan</option>
   <option>Feb</option>
   <option>Mar</option>
</select>

已选择的值不应出现在下拉列表中。例如,如果我选择“feb”,Feb 不应该出现在下拉列表中。

jsfiddle 链接:http://jsfiddle.net/jucLsmjx/

【问题讨论】:

标签: javascript jquery html css


【解决方案1】:
$('#mySelect').on("change", function(){
    $('option:selected', this).hide().siblings().show();
});

另外如果您想从一开始就触发选项隐藏,请添加.trigger('change');

$('#mySelect').on("change", function(){
    $('option:selected', this).hide().siblings().show(); 
}).trigger('change');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="mySelect">
  <option>a</option>
  <option>b</option>
  <option>c</option>
</select>

【讨论】:

  • 打败了我......并且效果很好,至少在我解释问题时+1
【解决方案2】:

您的选择器option[value=' + optionval + ']') 错误。您正在尝试按其值选择选项,但缺少 value='XXX' 属性,因此请尝试以下操作:

http://jsfiddle.net/jucLsmjx/8/

$('#mySelect').change(function(){
    var optionval = $('#mySelect').val();
    $('#mySelect  option:contains("'+optionval+'")').hide().siblings().show();;

});

【讨论】:

    【解决方案3】:

    只需克隆它(选择元素)并将其存储在变量中

    var $original = $("#mySelect").clone(true); // The argument "true" copies any event handlers.
    

    然后继续从&lt;select&gt;中删除选中的&lt;option&gt;

    $("#mySelect").change( function(e){
      e.preventDefault();
      var val = $(this).val();
      $("#mySelect option[value='"+val+"']").remove();
    });
    

    克隆部分适用于您需要原始 DOM 元素的情况,然后您可以随时将其附加到 DOM。

    【讨论】:

    猜你喜欢
    • 2015-10-29
    • 2014-02-27
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多