我正在尝试实现一个电流转换器,我成功但现在我正在实现一个按钮,它将改变两个选定菜单之间的选定选项,这意味着如果在第一个菜单中我已经选择了usd并且在第二个菜单中我选择gbp然后按下按钮,我想在第一个菜单中选择gbp,在第二个菜单中选择usd。 我已经设法更改两个菜单上的选定选项,但它不会在菜单本身中显示。 我忘记了什么?
$(function(){
$('a#switchButton').click(function(){
var $sel1 = $('#fromCurrency');
var val1 = $sel1.val();
var $sel2 = $('#toCurrency');
var val2 = $sel2.val();
$sel1.find("option[value='"+val1+"']").attr("selected",false);
$sel1.find("option[value='"+val2+"']").attr("selected",true);
$sel2.find("option[value='"+val2+"']").attr("selected",false);
$sel2.find("option[value='"+val1+"']").attr("selected",true);
});
});
这是一个屏幕截图,当按下中间的图标时,此处没有任何变化,但仅在代码本身中。如果我按下图标,我希望usd出现在“from”中,而inr则出现在“to”中。
答案 0 :(得分:2)
原来 selectmenu()功能有自己改变数值的方法。
在这里查看一个有效的版本:http://jsfiddle.net/atR6D/55/
$('#switchButton').click(function(){
var sel1 = $('#fromCurrency').selectmenu("value");
var sel2 = $('#toCurrency').selectmenu("value");
$('#fromCurrency').selectmenu("value", sel2);
$('#toCurrency').selectmenu("value", sel1);
});
看起来它正在<span>
标签中表示选择列表,这就是您无法真正更改原始选择列表的原因。
答案 1 :(得分:1)
$(function(){
$('#switchButton').click(function(){
var $sel1 = $('#fromCurrency');
var $sel2 = $('#toCurrency');
var tmp = $sel2.val();
$sel2.val($sel1.val());
$sel1.val(tmp);
});
});
这是demo。
答案 2 :(得分:1)
来自http://wiki.jqueryui.com/w/page/12138056/Selectmenu:
Methods:
refresh
parses the original element again, updates the value option and
rerenders the menu triggers events if value changed
所以只需在对基础选择进行更改后添加:
$(function(){
$('a#switchButton').click(function(){
var $sel1 = $('#fromCurrency');
var val1 = $sel1.val();
var $sel2 = $('#toCurrency');
var val2 = $sel2.val();
$sel1.find("option[value='"+val1+"']").attr("selected",false);
$sel1.find("option[value='"+val2+"']").attr("selected",true);
$sel2.find("option[value='"+val2+"']").attr("selected",false);
$sel2.find("option[value='"+val1+"']").attr("selected",true);
$sel1.selectmenu('refresh');
$sel2.selectmenu('refresh');
return false;
});
});