简体   繁体   English

Jquery 同步多个下拉列表

[英]Jquery sync multiple dropdown list

I've multiple dropdown lists and try to use jquery to sync available options in all dropdown list...我有多个下拉列表并尝试使用 jquery 同步所有下拉列表中的可用选项...

<select class="abc" id="test1">
    <option value="" selected></option>
    <option value="1">RTY</option>
    <option value="2">QWE</option>
    <option value="3">ASD</option>
    <option value="4">ZXC</option>
    <option value="5">BNM</option>
</select>
<select class="abc" id="test2">
    <option value="" selected></option>
    <option value="1">RTY</option>
    <option value="2">QWE</option>
    <option value="3">ASD</option>
    <option value="4">ZXC</option>
    <option value="5">BNM</option>
</select>
<select class="abc" id="test3">
    <option value="" selected></option>
    <option value="1">RTY</option>
    <option value="2">QWE</option>
    <option value="3">ASD</option>
    <option value="4">ZXC</option>
    <option value="5">BNM</option>
</select>

If I select one item from one of the dropdown list, the selected option will be hide from others dropdownlist如果我从下拉列表之一中选择一项,则所选选项将从其他下拉列表中隐藏

<select class="abc" id="test1">
    <option value="1" selected>RTY</option>
    <option value=""></option>
    <option value="2">QWE</option>
    <option value="3">ASD</option>
    <option value="4">ZXC</option>
    <option value="5">BNM</option>
</select>
<select class="abc" id="test2">
    <option value=""></option>
    <option value="2">QWE</option>
    <option value="3">ASD</option>
    <option value="4">ZXC</option>
    <option value="5">BNM</option>
</select>
<select class="abc" id="test3">
    <option value=""></option>
    <option value="2">QWE</option>
    <option value="3">ASD</option>
    <option value="4">ZXC</option>
    <option value="5">BNM</option>
</select>

If I un-select it or select another item, the previous selected item will be show again in all dropdown list RTY QWE ASD ZXC BNM RTY QWE ASD ZXC BNM RTY QWE ASD ZXC BNM如果我取消选择它或选择另一个项目,之前选择的项目将再次显示在所有下拉列表中 RTY QWE ASD ZXC BNM RTY QWE ASD ZXC BNM RTY QWE ASD ZXC BNM

Below is my jquery code, managed to hide selected item from all dropdown lists, but not able to un-hide selected item.下面是我的 jquery 代码,设法从所有下拉列表中隐藏选定的项目,但无法取消隐藏选定的项目。

$('.abc').change(function(){
    $('.abc').each(function(){
        if($('.abc').val() != '') {
            $('option[value="'+$(this).val()+'"]').hide();
        } else {
            $('option[value!="'+$(this).val()+'"]').not(this).show();
        }
    });
});

What is wrong in my code?我的代码有什么问题?

What about something like this:这样的事情怎么样:

var $abs = $('.abc').change(function() {
    $abs.children().show()
        .end().not(this)
        .find('[value="' + $(this).val() + '"]').hide();
});

Demo: http://jsfiddle.net/vw9z8bk1/1/演示: http : //jsfiddle.net/vw9z8bk1/1/

You can store your current selected values in array and then just hide every of them like:您可以将当前选定的值存储在数组中,然后将它们中的每一个都隐藏起来,例如:

 var vals = new Array();
 $('.abc').change(function() {
    vals = [];
    $('.abc').each(function(){ 
        var val = $(this).val();
        if (val != ""){
            vals.push(val);
        }
        $('option').show();
        for (var i = 0; i< vals.length; i++){
            $('option[value="' + vals[i] + '"]').hide();
        }
    });
});

Fiddle小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM