考虑到您有一个简单的选择框..您可以val()
用来设置选项..
<select id="selectId">
<option value="0">Default Value</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="button" id="buttonID" value="change"/>
尝试这个
$('#buttonID').click(function(){
$('#selectId').val('0'); //value of your default option
});
但是,如果您的默认选项是disabled
,那么您将需要解决方法来进行分配。有点像这样:
$(document).on('click', '#buttonID', function(e) {
var d = $('#selectId option:disabled').prop('disabled', '');
$('#selectId').val(0);
d.prop('disabled', 'disabled');
});
请记住,您可以根据$('#selectId').val(0);
自己的需要更改 的值。例如,如果第三个选项是您的默认选项并且值为“bob”,那么您可以说$('#selectId').val('bob');
我提供的答案只是一个最简单的解决方案...@SpYk3HH 如果您默认选择被禁用,则对其进行修改...。是的,@Felix Kling 已经在上一篇文章中回答了这个问题,所以请看一看..无论如何,谢谢大家。 .:)
通过 jQuery使用Attribute进行 Cross Compat 的解决方案
为了进一步了解 FelixKling 的解决方案,这里是完整的 jQuery 版本,使用从原始属性中提取的 .attr,而不是从 .prop 中“更改的属性”。
$(document).on('click', '#buttonID', function(e) {
$('#selectID option').filter(function(i){ return this.hasAttribute('selected') }).prop('selected', 'selected')
});
要进一步固化解决方案,请尝试上述 2 的组合。这样,无论 HTML 布局如何,您都必须重置为默认值。我的意思是,也许您没有设置默认值的选择框,而是选项 1 是加载时的默认值。同时,其他选择确实具有设置的默认值。下面将同时处理这两个问题。
// simply a jQuery 1.7+ way of delegating events to any Element match selector
$(document).on('click', 'button', function(e) {
// This both selects the first option of a select as well as looks for an option that might have had a default setting
var opt = $('select').val(0).children('option').filter(function(i){ return this.hasAttribute('selected') });
// if opt.length is 0, this will do nothing and option 1 is already set, else this will set this default option to selected
opt.prop('selected', 'selected');
// if you have an expected event tied to the select's "change" event, you might fire it here, like so:
$('select').change();
});
w/Out Comments,漂亮而简短
$(document).on('click', 'button', function(e) {
var opt = $('select').val(0).children('option').filter(function(i){ return this.hasAttribute('selected') });
opt.prop('selected', 'selected');
});
示例 2(带有更改事件)