js从不同脚本

时间:2017-03-06 13:58:24

标签: javascript jquery prototype eventtrigger

我有一个包含游戏原型的脚本。由于我们要多次重复使用这个原型,所以我将它放在一个单独的脚本中。

还有第二个脚本从主脚本实例化原型。在这个脚本中,我想从原型中捕获一个事件触发器。

原型

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

第二个脚本:

$("#trigger").on("noPossibilities", function() {
    console.log("no possibilities triggered");
});

由于第二个脚本没有捕捉到该事件,我可能会错过任何事情。第二个脚本包含在jQuery文档就绪函数中,原型一个不包含在内。因为当我还包装第一个脚本(它包含原型)时,第二个脚本不知道原型。

我搜索了互联网,我认为这与文档准备有关。

我试图从js中的原型中发送事件,遗憾的是这不起作用,因为我可能在那里做错了。

这是应该触发事件的脚本部分:

game.triggerEvent("id", "trigger", "noPossibilities");

game.prototype.triggerEvent = function(idOrClass, elementName, eventName){
    if (idOrClass == "id")
    {
        var element = document.getElementById(elementName);
    }
    else
    {
        var element = document.getElementsByClassName(elementName);
    }

    // Create the event
    var event = new CustomEvent(eventName, { "detail": "js event" });

    // Dispatch/Trigger/Fire the event
    element.dispatchEvent(event);
}

我尝试以前面提到的方式捕获它:

$("#trigger").on("noPossibilities", function() {
    console.log("no possibilities triggered");
});

真的希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题在于我的代码在第二个脚本中的顺序。

我在原型中实例化了很多游戏元素。同样具有id"触发"。

的元素

在我实例化原型(以及游戏的元素)之前,我试图绑定事件" noPossibilities"在具有id触发器的元素上。由于这个对象没有被实例化,所以没有任何东西可以绑定,所以它没有工作。