<input type="checkbox" id="dw"/>
<select id="oo">
<option>a</option>
<option>b</option>
<option>c</option>
</select>
$('#dw').change(function() {
if ($(this).is(':checked')) {
$('#oo').removeAttr('disabled');
} else {
$('#oo').attr('disabled', true);
}
}
我看不出错误在哪里。
答案 0 :(得分:1)
$('#dw').on('change', function() {
// If this.checked = true, then select will enabled else disabled
// instead of attr() use prop()
$('#oo').prop('disabled', !this.checked);
});
<强> Working sample 强>
详细了解 .prop()
您可以通过以下链接获得巨额收益:
<强> .prop() vs .attr() 强>
答案 1 :(得分:1)
工作演示 http://jsfiddle.net/2gbHQ/5/
良好阅读 http://api.jquery.com/prop/
.prop()方法仅获取第一个元素的属性值 在匹配的集合中。它为属性的值返回undefined 尚未设置,或匹配的集合没有元素。要得到 单独使用每个元素的值,使用循环结构 作为jQuery的.each()或.map()方法。
Jquery代码
$('#dw').change(function() {
if ($(this).is(':checked')) {
$('#oo').prop('disabled', false);
} else {
$('#oo').prop('disabled', true);
}
});
<强> HTML 强>
<input type="checkbox" id="dw" />
<select id="oo" disabled="true">
<option>a</option>
<option>b</option>
<option>c</option>
</select>
答案 2 :(得分:0)
您的代码也有效,只是您错过了关闭change
功能。请参阅更新的小提琴http://jsfiddle.net/f8jGU/1/
答案 3 :(得分:0)
.prop()
(https://api.jquery.com/prop/)的jQuery文档中解释了代码无法运行的原因:
属性通常会影响DOM元素的动态状态 更改序列化的HTML属性。例子包括价值 输入元素的属性,输入的禁用属性和 按钮,或复选框的选中属性。
.prop()
方法 应该用来设置禁用和检查而不是.attr()
方法。.val()
方法应该用于获取和设置 值。1 $( "input" ).prop( "disabled", false ); 2 $( "input" ).prop("checked", true ); 3 $( "input" ).val( "someValue" );重要提示:不应使用
.removeProp()
方法将这些属性设置为false。一旦删除了本机属性,它就不可能 又补充道。有关详细信息,请参阅.removeProp()
。