js запускает событие из прототипа из другого скрипта

У меня есть сценарий, который содержит прототип игры. Поскольку мы собираемся повторно использовать этот прототип много раз, у меня есть это в отдельном скрипте.

Также есть второй скрипт, который создает прототип из основного скрипта. В этом скрипте я хочу поймать триггер события из прототипа.

прототип

$("#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");
});

Очень надеюсь, что кто-то может мне помочь.


person Graham    schedule 06.03.2017    source источник
comment
Когда вы привязываете событие, существует ли элемент?   -  person epascarello    schedule 06.03.2017


Ответы (1)


Я нашел решение. Проблема была с порядком моего кода во втором скрипте.

Я создаю множество элементов игры в прототипе. Также элемент с идентификатором «триггер».

Перед созданием прототипа (и элементов игры) я попытался привязать событие «noPossibilities» к элементу с идентификатором триггера. Поскольку этот объект еще не был создан, нечего было связывать, поэтому он не работал.

person Graham    schedule 06.03.2017