27

1.onclick イベントをオンにしています。

$('#locations').click(function(){
$('#train').unbind('click'); 
//do some stuff
}

2.閉じるボタンをクリックしたら

$('.close').click(function(){
//do some stuff
}

3. #train をクリックすると再び

$('#train').bind('click', function() {
alert('train is clicked');
//do some stuff
}

問題は、#train が発火していないことです。イベントを .close 関数で再度バインドすることですか?

提案してください。よろしくお願いします。

4

2 に答える 2

43

あなたの質問を見ると、あなたはそれをバインドしているようには見えないclickのでunbind、発火しません。(機能のシーケンスを正しく保っていると仮定します)。次のようにする必要があります。

//Set a function with the action you need to do after you click the train
function  trainClick() {
  alert('train is clicked');
  //do some stuff
}

unbindバインドを解除するときは、関数名で呼び出します。

$('#locations').click(function(){
 $('#train').unbind('click',trainClick);
//do some stuff
}

次に、クリックをバインドするに#closeは (クリックされたとき)、次を使用します。

$('.close').click(function(){
  $('#train').bind('click',trainClick);
  //do some stuff
}

ノート :

jQuery v1.7 よりも新しいバージョンを使用している場合は、onより良い方法を使用することをお勧めします。上記のコードで、 とを置き換えるoffだけです。bindonunbindoff

$('#train').on('click',trainClick);
$('#train').off('click',trainClick);

お役に立てれば!

于 2013-06-22T11:42:00.070 に答える
7

ハンドラーのバインドとバインド解除

鍵はスコープです。

function (trainClick(){stuff it does})他のボタンの関数が参照できるように、イベント ハンドラの外側で を宣言および定義する必要があります。

以下は例です。

function trainClick()
{
    alert("train is clicked"); //Notice this function is declared outside event handlers below
}
$('#button1').on("click", trainClick); //this calls the above function

$("#button2").on("click",function(){
    $("#button1").off("click",trainClick); //unbinds button1 from trainClick() function (event handler)
});//End Button 2 click

$("#button3").on("click",function(){
    $("#button1").on("click",trainClick); //binds button1 to trainClick() function (event handler)
});//End Button 2 click
于 2015-11-05T20:12:11.667 に答える