通过javascript将jQuery UI selectmenu设置为特定选项

Ste*_*vie 21 jquery-ui

我有一个像下面这样的选择菜单

<select name="scale" id="scale">
  <option selected>linear</option>
  <option>root</option>
  <option>square</option>
</select>
Run Code Online (Sandbox Code Playgroud)

为了使它更好,我使用jQuery UI v1.11.2.

$('#scale').selectmenu();
Run Code Online (Sandbox Code Playgroud)

我现在可以读取下拉列表的值

alert($('#scale').val());
Run Code Online (Sandbox Code Playgroud)

这导致"线性"作为答案.我也可以通过使用将值设置为'square'

$('#scale').val('square');
alert($('#scale').val());
Run Code Online (Sandbox Code Playgroud)

这正确地给出了"方形"的答案.但是(!!!)下拉菜单不会在屏幕上显示.所以实际上我可以设置和读取值,但是可视化表示不会改变 - 小部件不会刷新.我在某个地方读了一个.change()但没有任何影响.我也试过像jQuery UI中的答案,动态选择菜单值设置不会改变可见的选定值但是失败了.$('#scale').selectmenu('value', 'square');错误消息中的任何重新启动Error: no such method 'value' for selectmenu widget instance.

任何人都可以帮助如何在将窗口小部件设置为新值后刷新它?

blg*_*lgt 56

如果您在使用后调用refresh,它应该按预期工作.val():

$('#scale').val('square');
$("#scale").selectmenu("refresh");
Run Code Online (Sandbox Code Playgroud)

原因是该.val()函数由jQuery提供,而widget是jQueryUI的一部分.[推测$ .ui的作者不想改变$功能,虽然这纯粹是我的猜测]

  • 您也可以在一行中创建它`$('#scale').val('square').selectmenu("refresh");` (4认同)