first unbind click and then bind (jquery)
Looking at your question, you do not seem to bind back the click
after you unbind
it, so it will not fire. (Assuming you've kept the sequence of your functionality right). You'll have to do it this way:
//Set a function with the action you need to do after you click the train
function trainClick() {
alert('train is clicked');
//do some stuff
}
When you're unbinding, call unbind
with the function name:
$('#locations').click(function(){
$('#train').unbind('click',trainClick);
//do some stuff
}
Then, to bind the click (when #close
is clicked), you'd use :
$('.close').click(function(){
$('#train').bind('click',trainClick);
//do some stuff
}
NOTE :
A better way would be use on
and off
, if you are using a version greater than jQuery v1.7 because, well.. then it will not work. In the code above, just replace bind
with on
and unbind
with off
.
$('#train').on('click',trainClick);
$('#train').off('click',trainClick);
Hope this helps!
BINDING AND UNBINDING HANDLERS
The Key is Scope.
You must declare and define the function (trainClick(){stuff it does})
outside the event-handler so that the other buttons' functions can see it.
Below is an example.
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