【发布时间】:2017-05-11 16:18:34
【问题描述】:
我有一个简单的代码,它在用户按下“A”时调用函数 func1()。在 func1() 内部,我希望,如果满足某个条件,则调用另一个函数 func2() 并停止 func1()。(我正在做的一个简短示例如下所示)。我怎样才能做到这一点?谢谢!
<html>
<head>
</head>
<body>
<script>
$(document).ready(function() {
document.addEventListener("keydown", function (e) {
else if (e.keyCode === 83) { // If "S" is pressed the game starts
func1();
}
});
})
function func1(){
$(document).ready(function() {
document.addEventListener("click", function(e) {
var myVar = Math.floor( Math.random() *6);
if (myVar>3){
func2();
}
}, false);
});
}
function func2(){
/////
}
</script>
【问题讨论】:
-
您将
$(document).ready()嵌套在 func1 内部,这将阻止内部代码触发。ready事件已经触发,这是第一次评估您的 javascript 时。当您调用 func1 时,它正在等待添加事件侦听器click,直到文档第二次触发了ready事件,这不会发生。 -
@JoeLissner 在这种情况下是不正确的。与事件处理程序的浏览器实现不同,jQuery 会将
.ready()回调排队并触发它们,即使事件已经执行。请参阅here - “但是,jQuery 的 .ready() 方法在一个重要且有用的方面有所不同:如果 DOM 准备就绪并且浏览器在代码调用 .ready(handler) 之前触发 DOMContentLoaded,则函数处理程序仍将被执行。相反,在事件触发后添加的 DOMContentLoaded 事件侦听器永远不会执行。" -
@War10ck 今天学到了一些东西 :)
-
@JoeLissner 见stackoverflow.com/questions/36143711/…
标签: javascript jquery function