Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery同步多个下拉列表_Javascript_Jquery_Drop Down Menu - Fatal编程技术网

Javascript Jquery同步多个下拉列表

Javascript Jquery同步多个下拉列表,javascript,jquery,drop-down-menu,Javascript,Jquery,Drop Down Menu,我有多个下拉列表,并尝试使用jquery同步所有下拉列表中的可用选项 <select class="abc" id="test1"> <option value="" selected></option> <option value="1">RTY</option> <option value="2">QWE</option> <option value="3">ASD

我有多个下拉列表,并尝试使用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>

我的代码有什么问题吗?

类似这样的东西怎么样:

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

演示:

您可以将当前选定的值存储在数组中,然后只需隐藏其中的每一个值,如:

 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();
        }
    });
});

为什么这个问题与今天早些时候提出的问题惊人地相似?谢谢这正是我要找的。
var $abs = $('.abc').change(function() {
    $abs.children().show()
        .end().not(this)
        .find('[value="' + $(this).val() + '"]').hide();
});
 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();
        }
    });
});