【问题标题】:Set a jQuery UI selectmenu to a specific option by javascript通过 javascript 将 jQuery UI 选择菜单设置为特定选项
【发布时间】:2018-08-09 14:09:18
【问题描述】:

我有一个如下的选择菜单

<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());

这导致“线性”作为答案。我还可以使用

将值设置为“正方形”
$('#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

谁能帮助在将小部件设置为新值后如何刷新它?

【问题讨论】:

  • 如果您在使用.val() 后调用refresh,它应该可以正常工作:$("#scale").selectmenu("refresh");
  • 它确实有效!非常感谢。
  • @blgt 请将其发布为答案。不要通过在 cmets 中回答而留下未回答的问题...
  • @TJ 完成。我想说这个问题最好关闭,因为它不太可能帮助除 OP 以外的任何人(因此评论和近距离投票)
  • @blgt 嗯,我认为这可能会在将来对某人有所帮助,除非它与原帖中提到的问题完全相同......

标签: jquery-ui


【解决方案1】:

如果您在使用.val() 后只调用refresh,它应该可以正常工作:

$('#scale').val('square');
$("#scale").selectmenu("refresh");

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

【讨论】:

  • 我认为是最好的答案。谢谢博主
  • 你也可以一行行搞定$('#scale').val('square').selectmenu("refresh");
猜你喜欢
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多