Javascript jQuery-根据条件禁用和启用锚定标记

Javascript jQuery-根据条件禁用和启用锚定标记,javascript,jquery,html,Javascript,Jquery,Html,在页面加载时,我检查是否有人注册。如果他是那么,我将启用一个链接,否则禁用链接 我尝试了以下方法,但不起作用 var status = $('#status'); if (status == 'Registered'){ $('#addlink').data('disabled'); } else { } 用于防止锚定标签工作 锚定标记在添加属性时不禁用禁用 var status = $('#status').text(); // get text value if it's is

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

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

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

}
用于防止锚定标签工作

锚定
标记在添加属性时不禁用
禁用

var status = $('#status').text(); // get text value if it's is span/div/p etc
if (status == 'Registered') {
    $('#addlink').click(function (e) {
        e.preventDefault();
    });
} 
用于防止锚定标签工作

锚定
标记在添加属性时不禁用
禁用

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

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

在执行此代码之前,只需将
状态设置为某个
字符串

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

选中。

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

在执行此代码之前,只需将
状态设置为某个
字符串

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

选中。

如果确实要删除链接,可以使用jquery展开方法

$("yourlinkselector").contents().unwrap();
这将删除链接。 若要再次添加,您可能需要将链接文本放入一个范围,为其命名并使用.wrap将其环绕在内容周围

可在此处找到工作示例:

//删除链接
$(“.link”).contents().unwrap().wrap(“”)
//再次添加链接并删除临时范围
$(“.oldLink”).contents().unwrap().wrap(“”);

如果确实要删除链接,可以使用jquery展开方法

$("yourlinkselector").contents().unwrap();
这将删除链接。 若要再次添加,您可能需要将链接文本放入一个范围,为其命名并使用.wrap将其环绕在内容周围

可在此处找到工作示例:

//删除链接
$(“.link”).contents().unwrap().wrap(“”)
//再次添加链接并删除临时范围
$(“.oldLink”).contents().unwrap().wrap(“”);

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


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


基于CSS的另一种选择是

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

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

基于CSS的替代方案是

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


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

请参考:并希望它能有所帮助。
状态
是一个jQuery对象,它永远不会评估为“已注册”
请参考:并希望它能有所帮助。
状态
是一个jQuery对象,它将永远不会计算为
“已注册”
没有名为“已禁用”的属性。@rink.attendant.6感谢您让我知道。我已经更新了代码。您正在阻止默认操作,为什么要返回布尔值FALSE?这里可以找到@rink comment的原因:我使用禁用的属性使其按如下方式工作:var status=$('#status')。text();如果(status='Registered'){$('#addLink').attr(“disabled”,true);}其他{$('#addLink').attr(“disabled”,false);}没有名为“disabled”的属性。@rink.attendant.6感谢您让我知道。我已经更新了代码。您正在阻止默认操作,为什么要返回布尔值FALSE?这里可以找到@rink comment的原因:我使用禁用的属性使其按如下方式工作:var status=$('#status')。text();如果(status='Registered'){$('#addLink').attr(“disabled”,true);}其他{$('#addLink').attr(“disabled,false);}我认为这不是最好的方法。。。防止默认值将更好地工作。实际上,如果此处引用对象,则需要将“status”设置为某个字符串,还有一件事我想在这里说的是,没有必要阻止默认操作,因为在未登录的情况下,我们只是删除href属性,所以即使单击它也不会发生任何操作我认为这不是最好的方法。。。防止默认值将更好地工作。实际上,如果此处引用对象,则需要将“status”设置为某个字符串,还有一件事我想在这里说的是,没有必要阻止默认操作,因为在未登录的情况下,我们只是删除href属性,所以即使您单击itAn instanceof jQuery,也不会发生任何操作,因为它永远不会等于字符串“Registered”。另外,我没有投反对票。没有投反对票,我甚至没有任何理由得到一个,但是
状态
是一个jQuery对象。我猜他不喜欢点击事件的位置ps+1,但请先放置点击事件,然后执行if station,并在点击时创建var(或者在那里分配一个值)@HusseinNazzal OP正在页面加载时检查它,所以我们不会单击事件。jQuery的实例永远不会等于字符串“Registered”。另外,我没有投反对票。没有投反对票,我甚至没有任何理由得到一个,但是
状态
是一个jQuery对象。我猜他不喜欢点击事件的位置ps+1,但请先放置点击事件,然后执行if station,并在点击时创建var(或者在那里分配一个值)@HusseinNazzal OP正在页面加载时检查它,所以我们不会单击事件。