如何使用jQuery删除“禁用”属性?
我必须首先禁用输入,然后单击链接以启用它们。
到目前为止,这是我尝试过的方法,但是没有用。
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">
jQuery的:
$("#edit").click(function(event){ event.preventDefault();
$('.inputDisabled').removeAttr("disabled")
});
这显示给我true
,然后false
输入没有任何变化:
$("#edit").click(function(event){ alert('');
event.preventDefault();
alert($('.inputDisabled').attr('disabled'));
$('.inputDisabled').removeAttr("disabled");
alert($('.inputDisabled').attr('disabled'));
});
回答:
prop()
** 使用jQuery时,请始终使用该方法来启用或禁用元素(有关原因,请参见下文)。
在您的情况下,它将是:
$("#edit").click(function(event){ event.preventDefault();
$('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});
为什么
prop()
在可以使用attr()
/removeAttr()
做到这一点时使用?
基本上,prop()
应该获取或设置时,可使用特性(如autoplay
,checked
,disabled
和required
在其他之中)。
通过使用removeAttr()
,您可以完全删除disabled
属性本身- prop()
只是将属性的基础布尔值设置为false。
尽管您 可以 使用attr()
/ 来完成操作removeAttr()
,但这并不意味着它 应该
完成(在这种情况下,可能会导致奇怪/有问题的行为)。
以下摘录摘自[jQuery文档prop()对这些要点进行了更详细的说明:
“属性和属性之间的差异在特定情况下可能很重要。在jQuery
1.6之前,该.attr()
方法有时在检索某些属性时会考虑属性值,这可能导致行为不一致。从jQuery 1.6开始,该.prop()
方法提供了一种显式检索方法属性值,同时 .attr()
检索属性。”
“属性通常会在不更改序列化HTML属性的情况下影响DOM元素的动态状态。示例包括value
输入元素的disabled
属性,输入和按钮的checked
属性或复选框的属性。.prop()
应使用此方法来设置disabled
而checked
不是该.attr()
方法。该.val()
方法应用于获取和设置 value
。”
以上是 如何使用jQuery删除“禁用”属性? 的全部内容, 来源链接: utcz.com/qa/413006.html