0

此代码是jquery#faq 页面的直接复制粘贴

<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。

4

3 回答 3

3

从 jQuery 1.7 开始,使用 .prop 代替:

$('#x').prop('disabled', true);
$('#x').prop('disabled', false);

虽然,正如其他人所提到的,它似乎工作正常:

http://jsfiddle.net/K5MRf/

于 2012-11-26T18:31:56.213 回答
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 FAQ),disabled属性应该设置为false或使用$(..).removeAttr().

于 2012-11-26T18:39:58.850 回答
1

问题是jQuery页面

他们说要使用$('#x').attr('disabled'),但是如果您看到运行的实际代码,那就是$('#x').attr('disabled','')

disabled会将属性设置为空字符串。但这意味着该属性仍然存在,并且该属性的正确用法是如果该属性完全存在,则该元素被视为禁用。

正确的方法是.prop直接使用和使用true/false值,如@Kurt所示。

于 2012-11-26T18:41:29.890 回答