Javascript jQuery select box.val(“”)的行为不同于1.9到1.10+最短的方法是什么

Javascript jQuery select box.val(“”)的行为不同于1.9到1.10+最短的方法是什么,javascript,jquery,Javascript,Jquery,以下内容在jQuery 1.9和1.10+之间的行为有所不同: <select id="s1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> $('#s1 option[value=1]').hide(); $('#s1').v

以下内容在jQuery 1.9和1.10+之间的行为有所不同:

<select id="s1">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

$('#s1 option[value=1]').hide();
$('#s1').val('');
使用新的和旧的jQuery版本执行此任务

我的问题是,是否有更短/更优雅的方法来做同样的事情

$("#s1")[0].selectedIndex = 0;
如果您确实喜欢jQuery,也可以这样做:

$("#s1").prop("selectedIndex", 0);

更多信息:

只需不设置值,它会自动选择第一个值,并在两个版本中工作:

$('#s1 option[value=1]').remove();
//$('#s1').val('');

根据您的更新和评论,您可以这样使用:

$('#s1 option[value=1]').hide();
$('#s1 option[value=2]').hide();
$('#s1 option:visible').first().attr('selected', 'selected');

你能详细说明一下“不再以同样的方式工作”吗?你所说的$'s1'.val;,是什么意思;?选择第一个选项?vs$'s1'。属性'selectedIndex',0;很抱歉粘贴了错误的代码部分-有问题的行为出现在.hide上,它在.remove+1上工作正常,因为您适合.remove,但问题在于.hidehow?是的,它可以工作,但我需要通用的方法,因为第一个可见选项事先不知道。当您应该使用Darek时-选中此项,如果第一个选项是隐藏的,selectedIndex属性将隐藏项计数到两者都不起作用;无论如何,你的答案是最接近的。。。
$('#s1 option[value=1]').hide();
$('#s1 option[value=2]').hide();
$('#s1 option:visible').first().attr('selected', 'selected');