如何动态选择jQuery ui selectmenu中的选项?

时间:2010-12-14 22:07:35

标签: jquery jquery-ui jquery-ui-selectmenu

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

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

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

插件被激活如下:

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

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

6 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:17)

假设您之前已经完成过此部分:

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

我发现这有效:

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

这会使程式化的下拉列表显示正确的值。

答案 2 :(得分:2)

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

$('#ListId').selectmenu("value", value);
$('#ListId').selectmenu("change"); // Add this for a change event to occur

答案 3 :(得分: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);

答案 4 :(得分: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); 

答案 5 :(得分:0)

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

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

$('#ListId').prop('selectedIndex', 0);