如果不允许用户点击超链接,我正在使用jQuery来禁用超链接。
文档(http://api.jquery.com/attr/)说:
要检索和更改DOM属性,例如表单元素的
checked
,selected
或disabled
状态,请使用.prop()
方法。
我假设表单元素是<input ...>
元素,因此不是链接(<a>
)
这就是.prop('disabled', true)
不起作用的原因,而.attr('disabled', 'disabled')
则不行。但是,它应该工作吗?是否有规范说可以禁用链接,在这种情况下点击它们将不会有任何动作? - 或者只是少数浏览器实现的东西,因为它们很好?
如果disabled
实际上不在链接上,是否还有其他简单的方法可以禁止用户点击该链接,或者我应该删除并重新附加href
属性?< / p>
答案 0 :(得分:4)
根据MDN的规范,不允许使用disabled
属性。
如果您希望用户阻止点击该链接,您可以通过以下几种方式进行操作:
$('a').on('click', function(event){
event.preventDefault(); //prevent the default behaviour of the Link (e.g. redirecting to another page)
});
或者
$('a').removeAttr('href'); //The link is not clickable anymore
虽然第一个选项会保持链接不变,但第二个选项会改变链接的外观,正如您在演示中看到的那样。 使用第二个选项时,您可以保存origin-href以便以后重新附加它。
答案 1 :(得分:2)
如您所见,disabled
用于表单输入,无法在a
元素上使用。
相反,您可以在preventDefault()
元素的点击处理程序中使用a
来阻止他们的行为:
$('a').click(function(e) {
if (clicksAllowedFlag) {
// your logic here...
}
else {
e.preventDefault();
}
});
或者,如果您希望仅在不执行任何自定义逻辑的情况下停止链接:
$('a').click(function(e) {
!clicksAllowedFlag && e.preventDefault();
});
如果将标志设置为false
,您可能需要考虑设置UI的样式,以便明显禁用链接,否则您的用户可能会对点击链接无效的原因感到困惑