如何使用jQuery检查<a>标签上的“disabled”属性?

37

我在一个<a>标签上有一个disabled='disabled'的属性。如何使用jQuery测试是否存在这个属性?以下代码返回undefined。我可以在firebug上看到该标签上的disabled属性,并且其他所有属性都可以使用相同的语法成功返回。我知道disabled标签的自定义属性。

$('#anchorID').attr('disabled');

1
我不是在添加禁用,我只需要检查它是否存在。 - coder
4个回答

60

尝试

$('#anchorID').is('[disabled=disabled]')

如果元素拥有 disabled="disabled" 属性,将返回 true。


这并不总是可靠的,使用.prop()(请参见其他答案) - dev_masta

53
新的改进方式是使用jQuery的 prop() 函数: http://api.jquery.com/prop/#prop1 $('#anchorID').prop("disabled"); 引用:
属性和特性之间的区别在某些情况下可能很重要。在jQuery 1.6之前,当检索某些属性时,.attr() 方法有时会考虑到属性值,这可能导致不一致的行为。从jQuery 1.6开始,.prop() 方法提供了一个明确检索属性值的方法,而 .attr() 则检索属性。

3
这是一个非常有信息量的答案,但它没有返回我领域的正确值。 - coder
2
这实际上不适用于<a>标签。但对于<input>和<button>标签很好。@bardiir的答案更好。 - Ryan

11

适用于“已选中”而不适用于“禁用”。 - Peter Graham

1
一个JS的替代方案:

let hasDisabledAttr =  document.querySelector('#anchorID').hasAttribute('disabled');

返回truefalse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接