0

一意の ID を持つ 2 つのボタン、つまり、クリック イベントを持つ previousButton と nextButton があります。特定の条件に基づいて、各ボタンのクリック イベントを有効または無効にしたいと考えています。

例えば

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. 使用しようとしましたが、この条件が満たされるたびにクリックイベントが呼び出されます。しかし、クリックボタンを有効にして、クリックイベントがトリガーされるのを待ちたいだけです。

$('#nextButton').bind('click',someHalder);

とにかくこれを達成できるものはありますか?

アップデート

bind の使用時に関数を呼び出したくないことに注意してください。バインドして、クリックイベントがトリガーされるように準備したいだけです。それ以外の場合は、関数を呼び出します。これは私が求めているものです:

  1. 解放する。
  2. ボタンをクリックしても何も起こらないはずです。
  3. バインド (ここでクリック イベントを発生させたくない)
  4. ボタンがクリックされると、Click イベントが発生します。

更新 バインドハンドラーがすぐに呼び出される以下の JSFiddler の例を参照してください: http://jsfiddle.net/myagdi/MCAKL/

4

2 に答える 2

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

編集:

問題 Jsfiddleによると、あなたがやっている間違いは、括弧をハンドラーに適用することです...$('#a').bind("click", handler());代わりに、ハンドラーに括弧を付けないで$('#a').bind("click", handler);ください Check it now New Jsfiddle

于 2012-06-17T08:48:33.643 に答える
0

より良いアプローチは、イベントハンドラー自体の内部でこれらのチェックを行うことです。

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

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

最終的にはまだJavaScriptでプログラミングしているので、この言語を利用してください。

于 2012-06-17T08:54:40.163 に答える