javascript - e 是递归处理函数的未定义的正确语法
问题描述
如何进行正确的递归调用?在这段代码中,控制台说我“e 未定义”。它是无序列表中按钮 ul 的事件监听器。
这是我的代码:
$("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;
}
}
我想我应该在函数 checkExit 之外定义...
解决方案
再次调用时需要将事件作为参数传递checkExit
:
$(document).on("keydown", checkExit = function(e) {
if (exit(e) == true) {
$('button').removeClass('active');
$(this).off("keydown"); //spegne il gestore corrente
}
checkExit(e);
});
推荐阅读
- ios - Callback violates Inversion of Control
- python - 自动加载表上的所有 SQLAlchemy 查询是否在导入后运行?
- javascript - 在页面离开事件和返回按钮之前
- python - 为什么python不能显示sin函数的准确值?
- javascript - 使用 vue.js 链接来自 mongoDB 的两个集合
- django - Django zappa 应用程序功能的模块化路径?不知道是哪一个
- c# - 在postgres Npgsql c#中执行多个插入查询
- protocol-buffers - 解码 Protobuf 响应
- python - (Discord Bot) on_raw_reaction_add(payload) 问题(票务系统)
- node.js - 快速重定向路线到另一条路线