javascript - jQuery - 在选择列表之间交换值

标签 javascript jquery html

我有一个包含 n 个选择的列表,其中包含从 1 到 n 的值。每当我更改一个选择中的值时,包含相同值的另一个选择应交换为先前在第一个选择中选择的值。

例如,最初 listA 设置为 1,listE 设置为 5。如果 listA 更改为 5,则 listE应该变成1,其他list不变。

这与 How to swap values in select lists with jquery? 等问题不同因为值在多个动态列表之间交换,而不是在两个静态列表之间交换。

编辑:每个值在列表组中应该只出现一次。它们最初都有不同的值。

这是我到目前为止的代码,不用说,它不起作用:

http://jsfiddle.net/yye3U/

HTML:

<div class="parentdiv">
  <select class="ranking">
    <option value="1" selected>1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>
  <select class="ranking">
    <option value="1">1</option>
    <option value="2" selected>2</option>
    <option value="3">3</option>
  </select>
  <select class="ranking">
    <option value="1">1</option>
    <option value="2">2<option>
    <option value="3" selected>3</option>
  </select>
</div>

JS:

var previous;
$( ".ranking" ).on( "focus", function() {
    previous = $( this ).val();
}).change(function() {
    var value = $( this ).val();
    var parent = $( this ).closest( ".parentdiv" );

    $( ".ranking option[value='" + value + "']", parent ).not( this ).parent().prop( 'selectedIndex', parseInt(previous) - 1 );
});

最佳答案

通过将先前的值存储在 DOM 元素的数据中,您可以使用简单的代码轻松地做您想做的事情:

$(".ranking").each(function(){
    $(this).data('__old', this.value);
}).change(function() {
    var $this = $(this), value = $this.val(), oldValue = $this.data('__old');

    $(".ranking").not(this).filter(function(){
        return this.value == value;
    }).val(oldValue).data('__old', oldValue);

    $this.data('__old', value)
});

Here's a fiddle

关于javascript - jQuery - 在选择列表之间交换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23679843/

相关文章:

javascript - 如果输入类型数大于 1,则添加必需属性

javascript - 计算和输入平均速度的函数

javascript - 如何使用 sanity.io 在字段中创建默认值?

html - 如何将两个元素向右浮动以在视觉和语义上保持相同的顺序?

javascript - window.open 在新窗口和原始页面上打开链接

javascript - gulp.watch() 不适用于 Jade

javascript - 具有相同类名的 Div : Select First Child and Set Different CSS Styles for Each

JQuery .isNumeric

html - 更改窗口宽度\高度时自动调整大小的 div

javascript - 我怎样才能将两个变量从 php 带到 jQuery(在不同的值上)。