¿Cómo hacer una llamada recursiva correcta? En este código la consola me dice "e is undefined". Es un detector de eventos para un botón ul en una lista desordenada.
Este es mi código:
$("button#ul").on("click", function(event){ var button = $(this); $(button).toggleClass("active"); if ($(button).hasClass('active')){ //event listener $(document).on("keydown", **checkExit** = function(e) { if (exit(e) == true){ $(button).removeClass('active'); $(this).off("keydown"); } **checkExit();** }); function exit(event){ // alert("prevKeyCode: "+prevKeyCode); var code = event.keyCode || event.which; var doubleEnter = (code == 13 && prevKeyCode == code); if (event.type == "click"){ return true; } else if (event.type == 'keydown'){ if (code == 27 || doubleEnter) { prevKeyCode = null; return true; } else if (code == 13) { prevKeyCode = 13; } else { prevKeyCode = code; } return false; } }Creo que debería definir fuera de la función checkExit...
Debe pasar el evento como un parámetro cuando vuelva a llamar a checkExit :
$(document).on("keydown", checkExit = function(e) { if (exit(e) == true) { $('button').removeClass('active'); $(this).off("keydown"); //spegne il gestore corrente } checkExit(e); });