2

如果不允许用户单击超链接,我正在使用 jQuery 禁用超链接。

文档(http://api.jquery.com/attr/)说:

要检索和更改 DOM 属性,例如表单元素的 、 或 state,请使用checkedselected方法。disabled.prop()

我假设表单元素是<input ...>元素而不是链接(<a>

这就是为什么.prop('disabled', true)不起作用,而同时起作用的原因.attr('disabled', 'disabled')。但是,它应该工作吗?是否有说明可以禁用链接的规范,在这种情况下单击它们不会有任何动作?- 或者它只是少数浏览器实现的东西,因为它们很好?

如果disabled实际上并不意味着在链接上,是否有任何其他简单的方法来禁止用户单击链接,或者我应该删除并重新附加该href属性?

4

2 回答 2

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 以便以后重新附加它。

演示

于 2015-02-25T11:09:02.757 回答
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 样式,以便很明显链接被禁用,否则您的用户可能会对单击链接无效的原因感到困惑。

于 2015-02-25T11:06:11.440 回答