jquery - 禁用单击

时间:2011-01-04 01:35:03

标签: javascript jquery

我只是想禁用用户点击某个条件的元素的功能。以下是我正在使用的一些代码:

     $('#navigation a').bind('click',function(e){

    var $this   = $(this);
    var prev    = current;

    current = $this.parent().index() + 1; // store the position in current

    if (current == 1){
    $("#navigation a:eq(1)").unbind("click"); // i want to disable the ability to click this element if current is 1
    }
    if (current >= 2){
    $("#navigation a:eq(1)").bind("click"); // this is wrong, but I want to rebind the click if current is greater than 1.  
    }

}

7 个答案:

答案 0 :(得分:84)

如果您使用的是jQuery版本1.4.3 +:

$('selector').click(false);

如果不是:

$('selector').click(function(){return false;});

答案 1 :(得分:23)

假设您使用点击事件,只需将其取消绑定。

例如

if (current = 1){ 
    $('li:eq(2)').unbind("click");
}

编辑: 您目前是否正在将点击事件绑定到您的列表?根据你上面的评论,我想知道这是不是你真的在做什么?你如何实现点击?它只是一个锚(<a>标签)?更明确的信息将有助于我们回答您的问题。

更新:

是否有人使用:eq()运算符。 http://jsfiddle.net/ehudokai/VRGfS/5/

正如我所料,它是一个基于0的索引运算符。因此,如果您想要在您的选择中转换第二个元素,那么您的选择是

$("#navigation a")

你只需添加:eq(1)(第二个索引)然后.unbind(“click”)所以:

if(current == 1){
    $("#navigation a:eq(1)").unbind("click");
}

应该做的伎俩。

希望这有帮助!

答案 2 :(得分:10)

Raw Javascript也可以很快完成同样的事情:

document.getElementById("myElement").onclick = function() { return false; } 

答案 3 :(得分:5)

您可以使用unbind方法删除已附加的处理程序...

if (current = 1){ 
   $('li:eq(2)').unbind('click');
}

你可以查看解除绑定的内容吗? Unbind manual

答案 4 :(得分:1)

在触发点击事件后使用off()方法来禁用元素以进行进一步的点击。

$('#clickElement').off('click');

答案 5 :(得分:0)

/ ** eworkyou ** //

$('#navigation a').bind('click',function(e){

    var $this   = $(this);
    var prev    = current;

    current = $this.parent().index() + 1; //

    if (current == 1){
    $("#navigation a:eq(1)").unbind("click"); // 
    }
    if (current >= 2){
    $("#navigation a:eq(1)").bind("click"); // 
    }

答案 6 :(得分:0)

我使用了.prop('disabled',true),它就像一个咒语,没有重新定义,很简单。

由于它会干扰Bootstrap Dropdown中的道具,因此必须将其超时125ms。