jQuery - 根据条件禁用并启用锚标记

时间:2013-09-25 13:29:05

标签: javascript jquery html5

在页面加载时,我正在检查一个人是否已注册。如果他是,那么我将启用一个链接,否则禁用该链接。

我尝试了以下方法,但它不起作用。

var status = $('#status');
if (status == 'Registered'){
    $('#addlink').data('disabled');
} 
else {

}

6 个答案:

答案 0 :(得分:4)

使用event.preventDefault来防止锚标记生效。

添加属性anchor

时,

disabled标记无法停用

var status = $('#status').text(); // get text value if it's is span/div/p etc
if (status == 'Registered') {
    $('#addlink').click(function (e) {
        e.preventDefault();
    });
} 

答案 1 :(得分:4)

基于CSS的替代方案是

$('#addlink').css('pointer-events', 'none');

截至2017年初,CanIUse报告此功能的支持率为94%。

答案 2 :(得分:2)

尝试此操作,如果用户是注册,则通过添加href启用链接,如果没有,则通过删除href属性禁用。

在执行此代码之前,只需将status设置为某个string

var href = $('#addlink').attr('href');
if(status == 'Registered'){
    $('#addlink').attr('href', href);
} else{
    $('#addlink').removeAttr('href');
}

检查here

答案 3 :(得分:1)

如果你真的想删除链接,可以使用jquery unwrap方法。

$("yourlinkselector").contents().unwrap();

这将删除链接。 要重新添加它,您可能必须将链接文本放入span中,为其命名并使用.wrap将其包装在您的内容中。

可以在此处找到工作示例:http://jsfiddle.net/Elak/hrvPj/2/

// remove the link
$(".link").contents().unwrap().wrap("<span class='oldLink'></span>")

// add the link again and remove the temp span
$(".oldLink").contents().unwrap().wrap("<a href='#'></a>");

答案 4 :(得分:-1)

为什么不使用javascript:void(0)?

<a href="javascript:void(0)"> Link </a>

var href = 'javascript:void(0)';

var status = $('#status').val();  // ??
if (status == 'Registered'){
    href = 'available link';
}

$('#addlink').attr('href',href);

答案 5 :(得分:-2)

var status = $('#status').val(); //Not sure if it is a value/text
$('#addlink').on('click', function (e) {
    if (status == 'Registered') {
        e.preventDefault(); // prevent the default action of anchor tag
        return false;
    }
});