web-dev-qa-db-fra.com

premier clic hors liaison puis liaison (jquery)

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.

24
Prithviraj Mitra

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!

39
krishgopinath

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
5
Sean