jquery 事件触发器不起作用
jquery event trigger not working
我有两个脚本。
第一个脚本包含游戏的原型 class。此 class 使用严格且未被文档就绪包围。触发器:
$("#trigger").trigger("noPossibilities");
在同样使用严格的第二个脚本中,我尝试捕获触发器:
$(document).ready(function() {
$("#trigger").on("noPossibilities", function() {
console.log("noPossibilities trigger");
});
});
问题是我抓不到触发器。这可能与 use strict/scope 有关,但我似乎找不到解决方法。
真心希望有人能帮帮我
更新
第一个脚本有一个原型 class.
此 class 正在第二个脚本中实例化。在处理程序之后。然后它仍然不起作用,因为第一个脚本在第二个脚本之前加载?
另外,当我从控制台执行此行时:
$("#trigger").trigger("noPossibilities");
它不会被触发。不应该这样吗?
更新 2
我发现了问题。第一个脚本在实例化时将带有 id trigger 的元素添加到文档中。我在游戏开始时有一个弹出窗口。现在,单击该按钮即可附加处理程序。
文档可能没有处理程序应该附加到的元素。现在它稍后被附加,现在它正在工作。
问题不在于范围,您是在处理程序附加到元素之前触发事件。 document ready handler 中的代码仅在加载 DOM 元素后执行。如果您在脚本之后立即触发,那么它不会工作,因为元素仍在加载。
您可以通过将其移动到另一个 document ready handler(仅在附加处理程序后执行)来检查不同上下文中触发的工作情况。
$(document).ready(function() {
$("#trigger").on("noPossibilities", function() {
console.log("noPossibilities trigger");
});
});
$(document).ready(function() {
$("#trigger").trigger("noPossibilities");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="trigger"></div>
我有两个脚本。
第一个脚本包含游戏的原型 class。此 class 使用严格且未被文档就绪包围。触发器:
$("#trigger").trigger("noPossibilities");
在同样使用严格的第二个脚本中,我尝试捕获触发器:
$(document).ready(function() {
$("#trigger").on("noPossibilities", function() {
console.log("noPossibilities trigger");
});
});
问题是我抓不到触发器。这可能与 use strict/scope 有关,但我似乎找不到解决方法。
真心希望有人能帮帮我
更新 第一个脚本有一个原型 class.
此 class 正在第二个脚本中实例化。在处理程序之后。然后它仍然不起作用,因为第一个脚本在第二个脚本之前加载?
另外,当我从控制台执行此行时:
$("#trigger").trigger("noPossibilities");
它不会被触发。不应该这样吗?
更新 2
我发现了问题。第一个脚本在实例化时将带有 id trigger 的元素添加到文档中。我在游戏开始时有一个弹出窗口。现在,单击该按钮即可附加处理程序。
文档可能没有处理程序应该附加到的元素。现在它稍后被附加,现在它正在工作。
问题不在于范围,您是在处理程序附加到元素之前触发事件。 document ready handler 中的代码仅在加载 DOM 元素后执行。如果您在脚本之后立即触发,那么它不会工作,因为元素仍在加载。
您可以通过将其移动到另一个 document ready handler(仅在附加处理程序后执行)来检查不同上下文中触发的工作情况。
$(document).ready(function() {
$("#trigger").on("noPossibilities", function() {
console.log("noPossibilities trigger");
});
});
$(document).ready(function() {
$("#trigger").trigger("noPossibilities");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="trigger"></div>