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関数でイベントを再度バインドするのですか?
提案してください。事前に感謝します。
あなたの質問を見ると、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
を使用する方が良いでしょう。上記のコードでは、bind
をon
に、unbind
をoff
に置き換えるだけです。
$('#train').on('click',trainClick);
$('#train').off('click',trainClick);
お役に立てれば!
バインドおよびバインド解除ハンドラ
キーはスコープです。
他のボタンの機能が表示できるように、イベントハンドラの外部で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