【发布时间】:2019-01-21 11:06:43
【问题描述】:
我有一个填充选择框的脚本。这意味着我不知道该框中的值或项目数。
我想制作另一个脚本来模拟在该框中选择第 N 个项目的行为。我已经阅读并无法弄清楚如何做到这一点。我确信有一个简单的选择。
【问题讨论】:
标签: javascript jquery html select drop-down-menu
我有一个填充选择框的脚本。这意味着我不知道该框中的值或项目数。
我想制作另一个脚本来模拟在该框中选择第 N 个项目的行为。我已经阅读并无法弄清楚如何做到这一点。我确信有一个简单的选择。
【问题讨论】:
标签: javascript jquery html select drop-down-menu
使用selectedIndex 属性:
$('select').prop('selectedIndex', 3);
您可以链接change() 方法来触发任何change() 事件:
片段:
$('select').change(function() {
console.log('changed');
});
$('select').prop('selectedIndex', 3).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>Not me</option>
<option>Not me</option>
<option>Not me</option>
<option>Select me!</option>
<option>Not me</option>
</select>
【讨论】:
option。您想在 select 元素上设置属性:$('#myDiv').prop('selectedIndex', 1).change();
您可以使用eq() 方法选择匹配集中的第N 个项目。从那里您可以将option 的selected 属性设置为true 以选择它。试试这个:
$('#mySelect option').eq(2).prop('selected', true).trigger('change');
请注意,给eq() 的索引是从零开始的,因此上面将选择第三个option 元素。
另请注意,当您以编程方式选择 option 时,不会引发任何事件。如果您需要该事件,则需要使用trigger() 手动触发它。
【讨论】:
option 时,不会引发任何事件。如果您需要该事件,则需要使用trigger() 手动触发它。
$('#mySelect').change(function(){
var selectedOption = $(this).prop('selected', true)
})
【讨论】:
如果您已经将选择元素作为对象或在循环中。
$('select').each(function() {
if( /*Some Filter*/ ){
$(this).val($(this).find('option').eq(2).val()).trigger('change');
}
});
它对我有用。
在 Chrome 和 IE 上测试。
【讨论】:
$('select').change(function() {
console.log('changed');
});
$('select').prop('selectedIndex', 3).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>Not me</option>
<option>Not me</option>
<option>Not me</option>
<option>Select me!</option>
<option>Not me</option>
</select>
【讨论】: