2013-08-08 3 views
0

Je suis dans une situation où je veux basculer lorsque l'utilisateur clique ou tape enter.Empêche le déclenchement de deux types d'événements

Malheureusement, je travaille sur un site massif qui, quelque part, à l'écoute de la clé enter et déclenche .click() sur certains articles quand ils reçoivent une enter keyup. Je ne peux pas trouver où, et je ne voudrais pas (ou être en mesure) pour le changer si je pouvais trouver, mais il se comporte comme ceci:

$("#item").on("keyup", function(event){ 
    if(event.keyCode == 13){$('#item').click();} 
}); 

Le résultat est que mon script « bascule » s'exécute deux fois lorsqu'un utilisateur tape enter, se défait.

$('body').on('click keyup', '#item', function(e) { 
    console.log("-----------------"); 
    if(e.type=="click") { 
     console.log("Event Type: " + e.type); 
     //toggle something 
    } else { 
     console.log("Event Type: " + e.type+ ", keyCode: " + e.keyCode); 
     //toggle something 
    } 
}); 

(Here's a JSFiddle.)

est-il un moyen d'éviter à la fois keyup et click d'être tiré quand quelqu'un frappe entrer? La réponse évidente est de supprimer la partie keyup du script, cependant, cela ne fonctionnera pas pour moi car le script [enter] -> [click] n'est pas appliqué universellement, j'ai donc besoin de la touche enter pour travailler sur les éléments où cela ne s'applique pas.

+1

Vous pouvez supprimer la liaison (s) précédente en utilisant '.off() ' –

+0

Comme mentionné dans la question, je ne veux pas changer la liaison existante, mais je suppose que j'avais tort quand j'ai dit que je serais" incapable "de le changer. Je suis juste "incapable" dans le sens où c'est nécessaire tel quel. – brentonstrine

+0

Ah d'accord, je pensais que vous ne pouviez pas changer leur code, mais je suppose que vous ne voulez pas changer ce comportement. –

Répondre

1

Vous pouvez utiliser l'espace de noms d'événement.

IE:

$(el).on('keyup:hamza', function(){ 
    //Detect if it was called by an element with event namespaced and do different code 
}) 

Vous pouvez également utiliser hors ('keyup: hamza') pour ne supprimer que vos événements ..

Questions connexes