如何使用jquery交换选择列表中的值?

我有两个简单的选择列表,并希望添加一个选项来交换它们中的值。 因此,第一个列表具有例如值“ONE”而另一个列表具有值“TWO”。 单击“交换”按钮时,第一个应具有值“TWO”,第二个应具有值“ONE”。

这是jsFiddle: http : //jsfiddle.net/YPyRF

这是HTML代码:

ONE
TWO
Swap values

这是js代码(来自是否有一个原生的jQuery函数来切换元素? ):

 jQuery("#form-item-from").after(jQuery("#form-item-to")); 

但是,在这种情况下,这不起作用。 此外,该function不应该取决于选择列表或交换按钮的位置(我找到了一个解决方案,其中交换按钮必须在两个列表之间)。

这样的东西会起作用:

 $("#SwapButton").click(function(e) { e.preventDefault();//This prevents the A tag from causing a page reload //Get the values var fromVal = $("#form-item-from option:selected").val(); var fromText = $("#form-item-from option:selected").text(); var toVal = $("#form-item-to option:selected").val(); var toText = $("#form-item-to option:selected").text(); //Set the values $("#form-item-from option:selected").val(toVal); $("#form-item-from option:selected").text(toText); $("#form-item-to option:selected").val(fromVal); $("#form-item-to option:selected").text(fromText); });​ 

这是你的小提琴,更新

注意:这只会切换所选的option 。 如果这不是您想要的,那么我就会误解,您可能更好地使用Adam的解决方案。 这是一个更好的例子 ,说明了它只交换选定的值。

试试这样的事: jsfiddle

当您点击链接时……
1)将#form-item-from中的所有选项保存到变量中
2)将#from-item-to中的所有选项保存到变量中
3)使用#to中的选项更新#from
4)使用#from中的选项更新#to

 $(function() { $("a").click(function() { var selectOne = $("#form-item-from").html(); var selectTwo = $("#form-item-to").html(); $("#form-item-from").html(selectTwo); $("#form-item-to").html(selectOne); // stops the link going anywhere return false; }); }); 

试试这个,

 $("a").click(function(e){ e.preventDefault(); var a = jQuery("#form-item-from").html(); var b = jQuery("#form-item-to").html(); jQuery("#form-item-from").html(b); jQuery("#form-item-to").html(a); })​ 

演示: http : //jsfiddle.net/jQACe/3/