没有处理程序的Jquery绑定

时间:2012-06-17 08:29:42

标签: jquery

我有一个带有唯一ID的2个按钮,即带有click事件的previousButton和nextButton。我想根据特定条件在每个按钮上启用或禁用click事件。

e.g。

var a=2;
var b=4
if (a!=2)
{  
   $('#previousButton').unbind('click');
}
else{
  $('#previousButton').bind('click');
}

if (b!=4)
{  
   $('#nextButton').unbind('click');
}
else{
  $('#nextButton').bind('click');
}

然后我的代码如下:

 $('#nextButton').click (function(){    //do some logic when next
button is clicked. });

$('#previousButton').click (function(){    //do some logic when
previous button is clicked });

问题:

  1. unbind按钮工作正常但绑定按钮一旦取消绑定就根本不起作用。

  2. 我尝试使用但每次满足此条件时都会调用click事件。但我只是想启用点击按钮并等待点击事件被触发。

  3.   

    $( '#Next按钮')结合( '点击',someHanlder);

    无论如何,这可以实现吗?

    更新

    请注意我不想在使用bind时调用任何函数。我只想绑定并准备好触发click事件。否则,它会调用该函数。这就是我所追求的:

    1. 拆散。
    2. 单击按钮时,不会发生任何事情。
    3. 绑定(不希望点击事件在此处开火
    4. 单击按钮时,Click事件应该触发..
    5. 更新 请参阅下面的JSFiddler示例,其中立即调用绑定处理程序: http://jsfiddle.net/myagdi/MCAKL/

2 个答案:

答案 0 :(得分:1)

当你从元素中取消绑定一个事件时它会删除处理程序......现在如果你再次尝试绑定它,你需要再次传递相同的处理程序..

正如你所说"but this invokes the click event everytime this condition is met. But I just want to enable the click button and wait for click event to be triggred."

我没有看到这种情况发生..

我做了一个小提琴,其中我先绑定然后再绑定然后再绑定..它表现得非常好...... Jsfiddle

If you don't specify any option in unbind call it removes all event handlers attached with the element, you can specify event type(In your case click) to unbind only that..You can even specify handlers to remove that way remaining handlers won't be detached..

编辑:

根据您的Problem Jsfiddle,您所犯的错误是将括号应用于处理程序...... 你不应该在$('#a').bind("click", handler());的处理程序中给出parenthisis而是写$('#a').bind("click", handler);现在检查New Jsfiddle

答案 1 :(得分:0)

更好的方法是在事件处理程序本身内进行这些检查。

$('#nextButton').click(function() {
    if(a == 2) {
        alert('Next button is clicked');
    }
});

$('#previousButton').click(function() {
    if(b == 4) {
        alert('Previous button is clicked');
    }
});

最终你还在用JavaScript编程,所以要使用这种语言!