1

我们如何使用 jQuery 在“选择”中选择“选项”?

$('#s_choice').selectedIndex = 1;//select 2nd item

不工作。JsFiddle 在http://jsfiddle.net/yesprasoon/pduX7/

4

5 回答 5

4

只需添加刷新,您也可以prop在 jquery 对象上使用或像这样访问 DOM 元素属性$('#s_choice')[0].selectedIndex

$('#s_choice').prop('selectedIndex', 1);
$('#s_choice').selectmenu('refresh'); 

或者只是把它串起来

$('#s_choice').prop('selectedIndex', 1).selectmenu('refresh').change();

演示

原因是,selectmenu 是一个 JQM 小部件,因此在实际选择元素上设置属性后,您需要对其进行刷新以刷新小部件。

是文档。

于 2013-06-15T17:54:36.823 回答
1

尝试:

$('#s_choice')[0].selectedIndex = 1;

或者:

$('#s_choice').prop('selectedIndex', 1);

或者简单地说:

document.getElementById('s_choice').selectedIndex = 1;

您遇到的问题是这selectedIndex是 DOM 节点的属性,而不是 jQuery 对象。

于 2013-06-15T17:53:00.133 回答
1

给你的选项不同的ID或类然后你可以做$('#s_choice').find('#option3').attr("checked", true)

于 2013-06-15T17:53:50.383 回答
1

在你的小提琴中,我改变了两件事:

  • 改为。$('#s_choice').selectedIndex = 1;_ $('#s_choice').prop("selectedIndex", 1);selectedIndex按照您的方式工作,您需要一个 DOM 对象,而不是 jQuery 对象。
  • 将您选择脚本放置位置的选项从onLoad更改为no wrap - in <body>。这意味着您的脚本将被放置在正文中。必须始终放置脚本才能使其正常工作。所以refresh不需要。对于琐碎的更改,例如设置默认值,您不需要使用刷新方法。

瞧!有用 :)

这是您更新的演示

于 2013-06-16T04:20:36.493 回答
1

[更新和小提琴添加]

试试这个,它肯定会改变你的选择并更新用户界面:

$('#s_choice').children(':eq(1)').attr('selected','selected').change();

将您的索引放在 eq 中的括号之间,例如:..(':eq(0)')..

JSFiddle

于 2013-06-15T18:53:34.300 回答