【问题标题】:JQuery Remove Options Where id != Other Selected OptionJQuery 删除选项 where id != Other Selected Option
【发布时间】:2013-05-20 00:49:37
【问题描述】:

我认为这是一个简单的语法问题。我有一个州列表和一个城市列表。一旦用户选择了一个状态,我想使用 Jquery 删除所有选项,但处于选定状态的选项除外。

脚本:

<script>
$(function(){
$('#state').change(function(){
    var selstate = $('#state:selected').text();
    $('.city:not(#'+selstate+')').remove();

});
});

</script>

HTML:

<select id="state" name='State'> 
    <option value="AL">Alabama</option> 
    <option value="AK">Alaska</option>
</select>

<select id="city" name='City'> 
    <option class="AL" value="City A">City A</option>
        <option class="AL" value="City B">City B</option>
    <option class="AK" value="City C">City C</option>
    <option class="AK" value="City D">City D</option>
</select>

【问题讨论】:

    标签: jquery drop-down-menu option removeclass


    【解决方案1】:

    试试这个:-

    $(function () {
        $('#state').change(function () {
            var selstate = $(this).val();
            $('#city option').not('.' + selstate).remove();
        });
    });
    

    我不确定您是否真的要删除这些选项,可能禁用会是更好的选择。

    Demo

    $(function () {
        $('#state').change(function () {
            var selstate = $(this).val();
            $('#city option').prop('disabled', false).not('.' + selstate).prop('disabled',true);
            $('#city option').not('[disabled]').eq(0).prop('selected',true); 
            // Clear current selection to the first city for the new state
        });
    });
    

    更新隐藏和显示选项(不适用于所有浏览器):-

    隐藏不需要的下拉菜单而不是删除它们:-

    Demo

    脚本

    $(function () {
        $('#state').change(function () {
             var selstate = $(this).val();
             $('#city option').addClass('hidden');
             $('#city option.hidden').not('.' + selstate).removeClass('hidden');
             $('#city option').not('.hidden').eq(0).prop('selected',true);
         });
    });
    

    CSS

    .hidden
    {
        display:none;
    }
    

    更新 2:- 将选项存储为数据并重建选择。

    Demo

    $(function(){
    
        $('#state').data('city', $('#city option'));//Store the options initially in data.
    
        $(function () {
            $('#state').change(function () {
                 var selstate = $(this).val();
                 var options = $(this).data('city');
                   $('#city').html(options.filter(function(){return this.className === selstate}));
             });
        });
    });
    

    【讨论】:

    • 您说的是禁用,因为如果它被删除,如果他们再次更改状态,我就无法恢复它?
    • 是的,如果您删除它,您需要重新添加它们。删除一个选项会将它们从 DOM 中完全删除。
    • 谢谢。这正是我所需要的
    • @BrianBarrus 查看 mu 更新,而不是删除。改为显示和隐藏它们。
    • 美丽。就是这个。
    猜你喜欢
    • 2019-02-09
    • 2013-10-10
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多