jquery事件触发器无法正常工作

时间:2017-03-15 11:48:59

标签: javascript jquery scope eventtrigger strict

我有两个脚本。

第一个脚本包含游戏的原型类。这个类是使用严格的,并没有文件准备好包围。触发器:

$("#trigger").trigger("noPossibilities");

在第二个脚本中,它也有use strict,我试着抓住触发器:

$(document).ready(function() {
    $("#trigger").on("noPossibilities", function() {
        console.log("noPossibilities trigger");
    });
});

问题在于我无法抓住触发器。这可能与使用严格/范围有关,但我似乎无法找到解决方法。

真的希望有人可以帮助我

更新 第一个脚本有一个原型类。

此类在第二个脚本中实例化。处理程序之后。然后它仍然无法工作,因为第一个脚本是在第二个脚本之前加载的?

当我从控制台执行此行时:

$("#trigger").trigger("noPossibilities");

它不会被触发。它不应该这样工作吗?

更新2

我发现了问题。第一个脚本在实例化时将带有id触发器的元素添加到文档中。我在游戏开始时有一个弹出窗口。现在处理程序在单击该按钮时附加了。

文档probaly没有处理程序应该附加到的元素。现在它正在被附加,现在它正在工作。

1 个答案:

答案 0 :(得分:2)

问题不在于范围,您在处理程序附加到元素之前触发事件。 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>