2012-06-17 41 views
0

我有一个2按钮,带有唯一标识符,即previousButton和nextButton,带有单击事件。我想根据某些条件启用或禁用每个按钮上的点击事件。没有处理程序的Jquery绑定

例如

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. 解除绑定按钮可以完美运行,但绑定按钮根本不会一旦它被工作解除绑定。

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

$( '#Next按钮')绑定( '点击',someHanlder)。

请问有什么可以实现的吗?

更新

请注意我不想调用任何功能用于绑定时。我只是想绑定并准备好触发点击事件。否则,它会调用该函数。这是我之后:

  1. 取消绑定。
  2. 单击按钮时不会发生任何事情。
  3. 绑定(不想点击事件,这里火
  4. 当按钮被点击然后点击事件应该火..

更新 请参考下面其中的绑定处理程序JSFiddler例子被调用直线距离: http://jsfiddle.net/myagdi/MCAKL/

+0

我真的不明白这个问题。 “一旦它被解除绑定,按钮根本不起作用” - 是不是解除绑定的关键? – JJJ

+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."

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

我做了一个小提琴,在我第一次绑定,然后unbinded然后再次binded..It行为完全正常... 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您正在做的错误是将括号应用于处理程序... 你不应该给parenthisis在处理程序$('#a').bind("click", handler());而不是写$('#a').bind("click", handler);检查现在New Jsfiddle

+0

我想绑定而不指定处理程序。原因:我不想在绑定时调用任何函数,只是想要绑定并为点击事件准备好它 –

+0

这就是在绑定时指定处理程序的原因......它为什么会调用该函数..它只会在用户将执行绑定的事件.. –

+0

当您使用hanlder执行绑定时,它似乎立即调用处理程序。这是我想解决的问题。 –

0

一个更好的方法是做你的事件处理程序本身内这些检查。

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

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

最终你还在使用JavaScript进行编程,所以请使用该语言!

相关问题