jquery 在更改第一个选择元素时更改两个选择元素

1aaf6o9v  于 2023-01-16  发布在  jQuery
关注(0)|答案(2)|浏览(176)

我有三个选项,如下所示:

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

 <select name="select2" id="select2">
 <option value="1">Item 1 second</option>
 <option value="2">Item 2 second</option>
 <option value="3">Item 3 second</option>
 </select>

 <select name="select3" id="select3">
 <option value="1">Item 1 third</option>
 <option value="2">Item 2 third</option>
 <option value="3">Item 3 third</option>
 </select>

用下面的代码我实现了改变第二个选择元素:

<script type="text/javascript">//<![CDATA[ 
 $(window).load(function(){
 $("#select1").change(function() { 
 if($(this).data('options') == undefined){
 /*Taking an array of all options-2 and kind of embedding it on the select1*/
 $(this).data('options',$('#select2 option, #select3 option').clone());
 } 
 var id = $(this).val();
 var options = $(this).data('options').filter('[value=' + id + ']');
 $('#select2, #select3').html(options);
 });

 });//]]>  
 </script>

参见演示:http://jsfiddle.net/MNs9t/

这很好用,只是我想把select 3中的选项也改为select 1中的选项。所以我尝试了下面的代码:

<script type="text/javascript">//<![CDATA[ 
 $(window).load(function(){
 $("#select1").change(function() { 
 if($(this).data('options') == undefined){
 /*Taking an array of all options-2 and kind of embedding it on the select1*/
 $(this).data('options',$('#select2 option, #select3 option').clone());
 } 
 var id = $(this).val();
 var options = $(this).data('options').filter('[value=' + id + ']');
 $('#select2, #select3').html(options);
 });

 });//]]>  
 </script>

但是这将显示两个选择项中来自select 2和select 3的所有选项,我想在select 3中做和在select 2中一样的事情...有人能帮忙吗?

参见演示:[http://jsfiddle.net/MNs9t/1/][2]

r6vfmomb

r6vfmomb1#

我看到的一个问题是,您试图在select1中使用相同的键保存select2和select3中的选项引用。

var $select2 = $('#select2'), $select3 = $('#select3');
$("#select1").change(function () {
    var id = $(this).val();

    if ($select2.data('options') == undefined) {
        $select2.data('options', $select2.find('option').clone());
    }
    var options = $select2.data('options').filter('[value=' + id + ']');
    $select2.html(options);

    if ($select3.data('options') == undefined) {
        $select3.data('options', $select3.find('option').clone());
    }
    var options = $select3.data('options').filter('[value=' + id + ']');
    $select3.html(options);
});

演示:Fiddle

fjaof16o

fjaof16o2#

像这样的事?

JS-jsfiddle

$("#select1").change(function() {
    var se = $(this).prop('selectedIndex');
    $("#select2").prop('selectedIndex',se);
    $("#select3").prop('selectedIndex',se);
});

或者类似的东西?

JS-第一代

$("#select1").change(function() {
    var va = $(this).val();
    $("#select2").val(va);
    $("#select3").val(va);
});

我不知道你到底在找什么:)

相关问题