1.J'ai un événement onclick le,
$('#locations').click(function(){
$('#train').unbind('click');
//do some stuff
}
2.Une fois le bouton de fermeture cliqué
$('.close').click(function(){
//do some stuff
}
3.Ensuite, si je clique sur #train
$('#train').bind('click', function() {
alert('train is clicked');
//do some stuff
}
Maintenant, le problème est que #train ne se déclenche pas. Est-ce pour lier à nouveau l'événement sur la fonction .close?
Veuillez suggérer.Merci à l'avance.
En regardant votre question, vous ne semblez pas relier le click
après l'avoir unbind
, donc il ne se déclenchera pas. (En supposant que vous ayez conservé la séquence de vos fonctionnalités correctement). Vous devrez le faire de cette façon:
//Set a function with the action you need to do after you click the train
function trainClick() {
alert('train is clicked');
//do some stuff
}
Lorsque vous n'êtes pas lié, appelez unbind
avec le nom de la fonction:
$('#locations').click(function(){
$('#train').unbind('click',trainClick);
//do some stuff
}
Ensuite, pour lier le clic (lorsque #close
est cliqué), vous utiliseriez:
$('.close').click(function(){
$('#train').bind('click',trainClick);
//do some stuff
}
REMARQUE :
Une meilleure façon serait d'utiliser on
et off
, si vous utilisez une version supérieure à jQuery v1.7 car, eh bien .. alors cela ne fonctionnera pas. Dans le code ci-dessus, remplacez simplement bind
par on
et unbind
par off
.
$('#train').on('click',trainClick);
$('#train').off('click',trainClick);
J'espère que cela t'aides!
MANIPULATEURS DE RELIURE ET DE LIAISON
La clé est la portée.
Vous devez déclarer et définir la function (trainClick(){stuff it does})
en dehors du gestionnaire d'événements pour que les fonctions des autres boutons puissent la voir.
Voici un exemple.
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