使用jquery禁用链接不起作用

时间:2015-12-22 07:26:51

标签: javascript jquery html

我试图通过检查是否满足某些条件来使用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()并且隐藏了链接,这意味着我正在访问该链接。所以任何人都可以告诉我应该怎么做办?

7 个答案:

答案 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