Javascript jquery-禁用单击

Javascript jquery-禁用单击,javascript,jquery,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){ $("#n

我只想在某些情况下禁用用户单击元素的功能。以下是我正在使用的一些代码:

     $('#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.  
    }

}

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

$('selector').click(false);
如果没有:

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

假设您使用的是click事件,只需解除该事件的绑定即可

范例

if (current = 1){ 
    $('li:eq(2)').unbind("click");
}
编辑: 您当前是否正在将单击事件绑定到列表的某个位置?根据你上面的评论,我想知道这是否真的是你在做的?如何启用单击?它只是一个锚(

正如我所预料的,它是一个基于0的索引运算符。因此,如果您想打开选择中的第二个元素,即您的选择所在的位置

$("#navigation a")
您只需添加:eq(1)(第二个索引),然后添加.unbind(“单击”),以便:

我应该做这件事


希望这有帮助!

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

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

您可以检查解除绑定可以做什么?

原始Javascript也可以很快完成同样的任务:

document.getElementById("myElement").onclick = function() { return false; } 
触发单击事件后,使用
off()
方法禁用元素以进行进一步单击

$('#clickElement').off('click');
/**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"); // 
    }
我使用了.prop('disabled',true),它就像一个符咒,没有重新定义,简单


必须将其超时125毫秒,因为它会干扰引导下拉列表中的道具。

我认为这是一个输入错误,所以我在jQuery选择器中添加了“#”)虽然。。。
.onclick
在jQuery对象上也不起作用。您需要
[0]
.get(0)
。实际上,我可能需要使用类似于“$”(“#导航li:eq(2)”的东西。取消绑定('click'));但这也不起作用。我试图将单击事件禁用到列表中的某个特定元素。@scifirocket:您是在代码中的某个位置绑定单击事件?还是仅使用要禁用的锚点?我以如下方式绑定单击:$(“#导航a”).bind('click',函数(e){所以我使用了这个标记。哦,好吧,这很有帮助。我认为它实际上就像在选择器上添加a一样简单。所以:$(“#导航li:eq(2)a”)。解除绑定('click');@scifirocket:当然我错了,但是如果你看到我上面的更新,我测试了这个答案:)现在,如果当前值为1,我已经解除了单击的绑定,那么我如何才能重新绑定单击。我知道这并不像$(“#导航a:eq(1)”)那么简单。绑定(“单击”);重新绑定do
$(“#导航a:eq(1)”。绑定(“单击”,函数(){//yourcode});
有没有办法切换禁用单击函数而不是重新定义它?
($选择器).prop(“禁用”,为真);
$('#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"); // 
    }