Estoy usando jquery en una aplicación web. Tengo una página que escucha pulsaciones de teclas como esta:
document.addEventListener('keyup', function (event) { event.preventDefault(); var key = event.keyCode; console.log("pressed key "+key); });Eso funciona en términos de que yo presione las teclas: envía el código de la tecla a la consola.
Ahora quiero simular una pulsación de tecla con una función diferente, lo que estoy haciendo así:
var keycode = 27; $(document).trigger( jQuery.Event( 'keyup', { keyCode: keycode, which: keycode } ) );Pero no pasa nada, específicamente, no veo el registro de la consola desde la primera función.
¿Alguien puede ver mi error?
EDITAR: funciona si cambio la primera función para usar jQuery .on() en lugar de js nativo .addEventListener, pero aún me gustaría entender por qué. ¿Es document una entidad diferente a $(document) ?
Para abordar la edición, cuando selecciona un elemento usando la notación jQuery $(), lo selecciona como un objeto jQuery con muchos métodos jQuery disponibles. El uso del selector de documentos JavaScript estándar creará un elemento DOM, pero no un objeto jQuery. Esta página tiene más información sobre formas alternativas de crear objetos jQuery cuando sea necesario: http://jqfundamentals.com/chapter/jquery-basics
Jquery tiene una función que puede vincular en su eventlistener .keyup() . Puede leer la documentación completa aquí: https://api.jquery.com/keyup/