我有一个类似以下的选择菜单
<select name="scale" id="scale">
<option selected>linear</option>
<option>root</option>
<option>square</option>
</select>
为了使它更好,我使用jQuery UI v1.11.2。
$('#scale').selectmenu();
我现在可以通过
读取下拉列表的值alert($('#scale').val());
导致'线性'作为答案。我也可以使用
将值设置为'square'$('#scale').val('square');
alert($('#scale').val());
正确地给出答案“正方形”。但是(!!!)下拉菜单不会在屏幕上显示。所以实际上我可以设置和读取值,但是可视化表示不会改变 - 小部件不会刷新。我在某个地方读了.change()
但没有任何效果。我也试过像jQuery UI Selectmenu value set dynamically does not change visible selected value这样的答案但是失败了。错误消息$('#scale').selectmenu('value', 'square');
中的任何Error: no such method 'value' for selectmenu widget instance
次结果。
任何人都可以帮助如何在将窗口小部件设置为新值后刷新窗口小部件吗?
答案 0 :(得分:55)
如果您在使用.val()
之后拨打refresh,它应该按预期工作:
$('#scale').val('square');
$("#scale").selectmenu("refresh");
原因是.val()
函数由jQuery提供,而小部件是jQueryUI的一部分。 [大概是$ .ui的作者并不想改变$功能,虽然这纯粹是我的猜测]