1

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

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

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

}
4

6 回答 6

7

基于 CSS 的替代方案是

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

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

于 2017-02-17T15:38:27.207 回答
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();
    });
} 
于 2013-09-25T13:32:07.507 回答
2

试试这个,如果用户已注册,则通过添加 href 来启用链接,如果没有,则通过删除 href 属性来禁用。

只需在执行此代码之前将其设置status为一些。string

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

在这里检查。

于 2013-09-25T13:32:10.937 回答
1

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

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

这将删除链接。要再次添加它,您可能必须将链接文本放入跨度中,为其命名并使用 .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>");
于 2013-09-25T13:45:36.207 回答
-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);
于 2013-09-25T14:09:54.010 回答
-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;
    }
});
于 2013-09-25T13:32:11.850 回答