我有两个简单的选择列表,并希望添加一个选项来交换它们中的值。所以,第一个列表是e。 G。值“ONE”,另一个列表的值为“TWO”。单击“交换”按钮时,第一个应具有值“TWO”,第二个应具有值“ONE”。
这是jsFiddle:http://jsfiddle.net/YPyRF
以下是HTML代码:
<div class="form-item-from">
<label for="form-item-from">From </label>
<select class="form-select" id="form-item-from"><option value="ONE">ONE</option></select>
</div>
<div class="form-item-to">
<label for="form-item-to">From </label>
<select class="form-select" id="form-item-to"><option value="TWO">TWO</option></select>
</div>
<a href="">Swap values</a>
这是js代码(来自Is there a native jQuery function to switch elements?):
jQuery("#form-item-from").after(jQuery("#form-item-to"));
但是,在这种情况下,这不起作用。此外,该功能不应该取决于选择列表或交换按钮的位置(我找到了一个解决方案,其中交换按钮必须在两个列表之间)。
答案 0 :(得分:5)
这样的事情会起作用:
$("#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的解决方案。 Here is a better example说明了它只交换选定值的事实。
答案 1 :(得分:2)
尝试这样的事情:jsfiddle
点击链接时...
1)将#form-item-from中的所有选项保存到变量
中
2)将#from-item-to中的所有选项保存到变量
中
3)使用#to
中的选项更新#from
4)使用#from
$(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;
});
});
答案 2 :(得分:2)
试试这个,
$("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);
})