我正在为一些jQuery开发人员做一些可能很简单的事情而苦苦挣扎。
我想通过两个事件处理程序传递一个变量,并在事件之外获得最终值。
function myfunction(){
var val = "";
$(document).on('keyup',function(e) {
if(e.which == 13) {
val = "keyup";
console.log(val);
}
});
$('#list li').click(function() {
val = "click"
console.log(val);
});
console.log('final val =' + val);
}
$(document).ready(function(){
myfunction();
});
所以基本上,我应该在控制台中得到两条带有相同“val”的消息!
有什么办法让它工作吗?
如果有任何信息缺失,请在评论区让我知道!
您似乎不了解回调是如何工作的。让我解释一下。您有两个事件,一个针对document
上的keyup
,另一个针对click
上的li
元素。它们接收一些函数
作为参数。在您的代码运行时,您传递给事件处理程序的函数只被定义,而不被执行,这是完全合乎逻辑的,因为在这一点上,不会发生触发它们的事件。因此,回调是定义的行为,当发生某些事情时会触发这些行为。
因此,您误解的是,您混淆了事件处理程序的定义和它们的执行。但是,在它们的定义点,它们没有被执行,就在为一个变量调用它们的定义console.log
之后,该变量由于缺少触发其初始化的事件而尚未初始化。
回调是事件发生时“回调”的函数。
例如,如果你给某人打电话,让他/她来拜访你,那么主动地在门外等他们是没有意义的。当他到达的时候,他会给你回电话,因为发生了一件事。就回调而言,这种行为在函数级别上非常相似
$(document).on('keyup',function(e) { //when keyup on document, much later than the call of myFunction happened
if(e.which == 13) {
val = "keyup";
console.log(val);
}
});
$('#list li').click(function() { //when clicking on li, much later than the call of myFunction happened
val = "click"
console.log(val);
});
console.log('final val =' + val); //At the call of myFunction at page load
由于document
上的keyup
和li
元素上的click
随时可能发生,因此讨论val
的最终值没有多大意义。由于keyup
和click
很少同时发生,因此在给定时刻确定val
的最终值似乎是在处理边缘情况。如果这是您想要的,那么您可以使用信号量行为。
我是Java编程的新手,所以这个问题对这里的许多人来说可能听起来很愚蠢。我试图让自己熟悉JavaFX事件处理机制。 我正在开发一个GUI,我希望按钮在单击它时以及按下Enter键时执行相同的功能。 我能做以下事情吗? 然后将它用于两个按键事件
问题内容: 让我开始关注消息队列和Redis MQ (出色的框架)。 我了解您必须使用.RegisterHandler(…)确定哪个处理程序将处理消息队列中的消息/事件的类型。 因此,如果我有EventA,EventB等,我应该有一个服务来处理每个这些事件,例如: 因此,这些应该只是创建的队列/ redis列表? 另外,如果我希望发生一系列事件,例如EventA类型的消息也具有一个处理程序,该处理
我正在使用GoogleFirebase(身份验证和云firestore)开发一个应用程序。根据文档,我应该将以下依赖项添加到我的应用程序级构建中。gradle文件以访问cloud firestore数据库 但是,这种方法在编译时会产生以下错误: "注释处理器现在必须显式声明。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到注释处理器配置。-auto-value-1.4.jar(com.g
我试图在一个简单的JavaFX应用程序中向一个可编辑的组合框中添加一个关键事件处理程序。由于场景构建器不提供对组合框中的TextField的访问,我不得不在代码中添加事件处理程序。 下面是我添加处理程序的尝试。 设置事件处理程序的更合适的方法是什么? 编辑:添加完整的源代码
我在页面上有输入字段和提交按钮。 这里是jQuery代码: 我想防止模糊,如果从输入字段点击提交div,但想允许它,如果从输入字段点击页面的其他部分。我无法使用“提交”按钮。 我已竖起了小提琴。净/405kzboh/1 但是现在我甚至不明白为什么点击事件没有在模糊事件之前触发,如果有人从输入点击提交!
最近,我发现SBT的一个有趣的问题。我很难用几句话来描述它,所以下面是我所做的几个步骤。 我有一些scala任务要部署。我把它发布到我们本地的nexus repo中,所以有几个项目可以使用它。下面是内部nexus回购的屏幕截图 因此,我将其放入build.sbt文件。 “sbt.LiquiBase”%“**sbt-LiquiBase-Deploy”%“1.0-3”** 它失败于未解决的依赖,我对此