Code:
$('#Inputfield').keyup(function(e)
{
if(e.which == 13)
{
functionXyz();
}
else
{
functionZyx();
}
});
$(document).keyup(function(exit) {
if (exit.keyCode == 27) { functionZzy(); }
});
Question: Comment supprimer le gestionnaire d'événements keyup de keyCode == 27 et conserver les autres gestionnaires d'événements $ (document) .keyup intacts?
Vous devez utiliser une fonction nommée pour pouvoir référencer ce gestionnaire spécifique lors de l'appel de .unbind()
, comme ceci:
function keyUpFunc(e) {
if (e.keyCode == 27) { functionZzy(); }
}
$(document).keyup(keyUpFunc);
Puis plus tard lors de la dissociation:
$(document).unbind("keyup", keyUpFunc);
Vous attachez les gestionnaires d'événements à différents éléments, de sorte que vous pouvez supprimer en toute sécurité le gestionnaire de l'objet spécifique (déjà mentionné, je sais).
Par souci d'exhaustivité, si vous souhaitez attacher plusieurs gestionnaires pour le même événement au même objet , vous pouvez utiliser événements avec espace de noms :
$('#Inputfield').bind('keyup.keep', function(e){/*...*/});
$('#Inputfield').bind('keyup.notkeep', function(e){/*...*/});
$('#Inputfield').unbind('keyup.notkeep');
// or event $('#Inputfield').unbind('.notkeep');
Depuis jQuery 1.7 , les méthodes .on
et .off
sont le moyen préféré pour ajouter et supprimer des gestionnaires d'événements. À cet effet, ils se comportent exactement comme .bind
et .unbind
et fonctionne également avec les événements avec espace de noms.
jQuery vous permet de lier des événements qui ne seront pas liés après leur première invocation. Si vous cherchez à exécuter cette fonction de frappe une seule fois, regardez la méthode .one () répertoriée ici: http://api.jquery.com/one/
$(document).one('keyup', function(e) {
if (e.keyCode == 27) { functionZzy(); }
});
Si vous n'avez qu'un seul gestionnaire sur un élément, vous pouvez le dissocier en toute sécurité en utilisant unbind
sans utiliser de fonctions nommées comme le suggère Nick Craver. Dans ce cas, appeler
$('#Inputfield').unbind('keyup');
n'affectera pas le gestionnaire sur document
.