如何让input[disabled=true]
在jQuery中工作?
答案 0 :(得分:9)
disabled
是boolean attribute,因此只有两种状态:设置而不设置。
以下都是平等的:
<input disabled="true">
<input disabled="disabled" />
<input disabled>
<input disabled="">
您可以将所有变体与$("input[disabled]")
匹配。
使用jQuery,您可以使用$(...).prop('disabled')
获取元素的状态,这将返回一个布尔值。
答案 1 :(得分:2)
1).attr
而不是.prop
。 The docs
2)使用disabled
字符串作为属性值(而不是true
)
编辑正如 Kos 在评论中指出的那样,prop是jQuery 1.6或更高版本中的有效函数。
答案 2 :(得分:2)
这是您的原始代码:
$('<input class="inp" type="text" value="jquery" />').prop('disabled', true).appendTo('body');
此代码中有两个错误:
首先,您应该使用的JQuery函数是.attr()
,而不是.prop()
。
其次,true
需要设置为一个字符串,因为你现在拥有它,它只是将它设置为Javascript布尔值,这与你的"true"
不一样想用。
但是,我还要指出disabled
属性的正确值实际上是disabled="disabled"
,而不是disabled"true"
。两者都适用于所有浏览器,但前者是正确的值,所以这就是你应该使用的。
鉴于这一切,我们可以将您的代码更新为:
$('<input class="inp" type="text" value="jquery" />').attr('disabled', 'disabled').appendTo('body');
...并更改您的HTML和CSS以使用disabled="disabled"
和input.inp[disabled=disabled]
。
(顺便说一句,CSS也可以写成input.inp[disabled]
,这可以适用于属性的任何值。
希望有所帮助。