此代码是jquery#faq page
的直接复制粘贴<select id="x" style="width:200px;">
<option>one</option>
<option>two</option>
</select>
<input type="button" value="Disable" onclick="$('#x').attr('disabled','disabled')"/>
<input type="button" value="Enable" onclick="$('#x').removeAttr('disabled')"/>
select
选项列表在首次点击disable
时被停用,但在点击Enable
按钮时未再次启用。
请告诉我,上面这段代码出了什么问题?
我在Windows上使用Chrome 23.0.1271.64。
答案 0 :(得分:3)
从jQuery 1.7开始,使用.prop代替:
$('#x').prop('disabled', true);
$('#x').prop('disabled', false);
虽然如其他人所说,它似乎似乎正常工作:
答案 1 :(得分:1)
您对官方jQuery页面上存在错误是正确的。查看该页面的源代码显示这是实际代码:
<select id="x" style="width:200px;" disabled="disabled">
<option>one</option>
<option>two</option>
</select>
<input type="button" onclick="$('#x').attr('disabled','disabled')" value="Disable">
<input type="button" onclick="$('#x').attr('disabled','')" value="Enable">
如您所见,onclick
代码不正确;要启用控件(根据jQuery常见问题解答),disabled
属性应设置为false
或使用$(..).removeAttr()
删除。
答案 2 :(得分:1)
问题是jQuery页面
他们说要使用$('#x').attr('disabled')
,但如果您看到实际运行的代码,则为$('#x').attr('disabled','')
这会将disabled
属性设置为空字符串。但这意味着该属性仍然存在,并且该属性的正确用法是,如果该属性存在,则该元素被视为禁用。
正确的方法是使用.prop
并直接使用true
/ false
值,如@Kurt所示..