我有一个包含游戏原型的脚本。由于我们要多次重复使用这个原型,所以我将它放在一个单独的脚本中。
还有第二个脚本从主脚本实例化原型。在这个脚本中,我想从原型中捕获一个事件触发器。
原型
$("#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");
});
真的希望有人可以帮助我。
答案 0 :(得分:0)
我找到了解决方案。问题在于我的代码在第二个脚本中的顺序。
我在原型中实例化了很多游戏元素。同样具有id"触发"。
的元素在我实例化原型(以及游戏的元素)之前,我试图绑定事件" noPossibilities"在具有id触发器的元素上。由于这个对象没有被实例化,所以没有任何东西可以绑定,所以它没有工作。