20

将菜单从常规选择更改为 jQuery 选择菜单后,我无法再以编程方式选择其中的选项。有没有办法做到这一点?

要选择的代码是(假设 ListId 是列表的实际 Id)

$('#ListId').val(value);

该插件是这样激活的:

$("#ListId").selectmenu({ style: "dropdown", width:140 });

有没有办法在选择菜单中选择一个项目?调用相同的 .val(value) 函数只会选择隐藏的原始选择列表中的值,而不是样式精美的 jQuery 选择菜单。

4

6 回答 6

23
$('#ListId').selectmenu("value", value);
于 2010-12-14T22:33:01.293 回答
20

假设您之前已经完成了这一部分:

$("#ListId").selectmenu({ style: "dropdown", width:140 });

我发现这有效:

$('#ListId').val(value);
$('#ListId').selectmenu("refresh");

这会导致程式化的下拉菜单显示正确的值。

于 2015-02-26T18:35:22.070 回答
2

您还可以通过添加更改调用来触发更改事件处理程序:

$('#ListId').selectmenu("value", value);
$('#ListId').selectmenu("change"); // Add this for a change event to occur
于 2012-03-07T14:07:10.277 回答
1

请注意,您必须使用索引(而不是值)来选择使用此方法的选项。

例如,给定这个选择。

<select id="ListId">
   <option value="value-one">One</option>
   <option value="value-two">Two</option>
</select>

在这种情况下,表达式$('#ListId').selectmenu("value", "value-two");不会返回任何结果。取而代之的是,我们必须使用$('#ListId').selectmenu("value", "2");. 换句话说,我们必须使用 select 中元素的位置/索引。不是价值!

查找索引很容易。您可以使用以下行来实现它。

var index = $('#ListID option[value="value-two"]').index();
$('#ListId').selectmenu("value", index);
于 2014-10-23T06:46:40.670 回答
0

我尝试了以下方法,但在我的情况下不起作用

1.

$('#ListId').val(value);
$('#ListId').selectmenu("refresh");

2.

$('#ListId').selectmenu("value", value);

3.

var option = $("#ListID option")
option.attr("selected", true);
// option.prop("selected", true);
// option.attr("selected", "selected");
// option.prop("selected", "selected");
$('#ListId').selectmenu("refresh");

刷新,选择....等。在某些情况下它不起作用。

因此,我在 chrome 中按ctrl+I来查看源代码。我使用以下代码来解决我的情况。

// Set Component Separator   jQuery UI SelectMenu
componentSeparatorPlaceHolder.find(".ui-selectmenu-text").html(inputComponentSeparatorStr); 
// Set ComponentSeparatorDropDown
componentSeparator.val(inputComponentSeparatorStr); 
于 2015-04-15T07:34:59.890 回答
0

我尝试了以下方法,它确实适用于我的情况

$('#ListId').find('option[value=""]').attr("selected", true);    

或者

$('#ListId').prop('selectedIndex', 0);
于 2015-10-19T06:03:37.923 回答