我试图通过检查是否满足某些条件来使用jquery中的ifment.I已经查看了其他问题并尝试了这些解决方案来禁用链接
if (discussionPointsSize == 0) {
$('#discussionPointsLink').preventDefault();
$('#discussionPointsLink').bind('click', false);
$('#discussionPointsLink').click(function() {
return false;
});
$('#discussionPointsLink').data('disabled()')
$('#discussionPointsLink').click(function() {
return ($(this).attr('disabled')) ? false : true;
});
$('#discussionPointsLink').click(function(e) {
e.preventDefault();
//do other stuff when a click happens
});
}
但是所有上述解决方案都没有禁用链接。只是为了确保我尝试.hide()
并且隐藏了链接,这意味着我正在访问该链接。所以任何人都可以告诉我应该怎么做办?
答案 0 :(得分:5)
您应该在CSS中尝试pointer-events: none;
。如果条件为真,我们将为其添加类disable-this
。如果没有,我们会删除课程disable-this
if (discussionPointsSize == 0) {
$('#discussionPointsLink').addClass('disable-this');
} else {
$('#discussionPointsLink').removeClass('disable-this');
}
我们将像这样定义类disable-this
.disable-this{
pointer-events: none;
}
如果您不想在CSS文件中添加任何内容,则应该这样做
if (discussionPointsSize == 0) {
$('#discussionPointsLink').css({'pointer-events': 'none'});
} else {
$('#discussionPointsLink').css({'pointer-events': 'inherit'});
}
答案 1 :(得分:0)
你可以使用它。如果你想禁用它的功能。
$('.my-link').click(function (e) {e.preventDefault();return false;});
答案 2 :(得分:0)
试试这个
$(this).attr('href',"#")
它不会执行点击,您应该将颜色更改为灰色
答案 3 :(得分:0)
这是正确的方法:
$('#discussionPointsLink').click(function(e) {
if(discussionPointsSize == 0){
e.preventDefault();
}else{
//do other stuff when a click happens
}
});
我猜你试图取消绑定点击处理程序以执行代码,如果是这种情况,那么你可以使用.off()
但是你需要用.on()
绑定事件:
if(discussionPointsSize == 0){
$('#discussionPointsLink').off();
}
答案 4 :(得分:0)
试试这个......
if (discussionPointsSize == 0) {
$('#discussionPointsLink').attr("href","javascript:void(0);");
}
答案 5 :(得分:0)
这将禁用链接并使其成为纯文本,如果条件变为false,则会再次成为链接。
$(function() {
$(".anylink").click(function(e) {
var discussionPointsSize = 0;
if (discussionPointsSize == 0) {
e.preventDefault();
this.disabled=true;
$(this).attr("data-href", this.href); // Saving it if you want to regenrate a link.
this.removeAttribute('href');
this.style.textDecoration = 'none';
this.style.cursor = 'default';
return false;
}
else{
this.disabled=false;
//assign href dynamically
this.href = $(this).data("href");
this.style.textDecoration = "underline";
this.style.cursor = "hand";
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://example.com" data-href="http://example.com" target="_blank" class="anylink">Yo, Click Me</a>
答案 6 :(得分:0)
我认为有很多方法可以解决它,我的解决方案是添加属性&#34;禁用&#34; ,以及&#34; preventDefault()& #34; ,一些&#34; css&#34; 代码如下:
<强> HTML 强>
<a id="a1" href="http://vnlives.net">vnlives.net</a> |
<a id="a2" href="http://www.google.com">Google</a>
<强> JAVASCRIPT 强>
$('#a1').attr('disabled', 'disabled').css("color","#ccc");
$('a').live('click', function(e) {
if ($(this).attr('disabled') == 'disabled') {
e.preventDefault();
}
});
DEMO: https://jsfiddle.net/bnson/7hzvvwp8/3/
注意:我使用的是jquery 1.7.2