在页面加载时,我正在检查一个人是否已注册。如果他是,那么我将启用一个链接,否则禁用该链接。
我尝试了以下方法,但它不起作用。
var status = $('#status');
if (status == 'Registered'){
$('#addlink').data('disabled');
}
else {
}
答案 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;
}
});