Проверьте, есть ли у элемента прослушиватель событий. нет JQuery

Как проверить, есть ли на элементе прослушиватель событий, если я использую встроенную функцию, как в коде ниже. потому что у меня есть функция, которая вызывает функцию и добавляет прослушиватель событий, но это приводит к тому, что прослушиватель событий дублирования заставляет ее запускать функцию дважды. так как я могу проверить это, чтобы я мог предотвратить добавление прослушивателя событий, если он уже существует. Спасибо!:D

for (var a = 0;a<formFieldInput.length;a++) {
            if(formFieldInput[a].hasAttribute("name") && formFieldInput[a].attributes.title.value !== "Valid Until") {
                formFieldInput[a].addEventListener("click",function(event) {
                    toggleFieldList(event,"show");
                });
            }

3 ответа

Решение

Для этого нет функции JavaScript. Тем не менее, вы можете установить логическое значение true когда вы добавляете слушателя, и false когда вы удалите его. Затем проверьте это логическое значение, прежде чем добавлять дубликат прослушивателя событий.

Возможный дубликат: Как проверить, существует ли динамически подключенный прослушиватель событий или нет?

В эти дни в консоли Chrome Dev Tools вы можете быстро выполнить эту функцию ниже, чтобы показать всех прослушивателей событий, которые были присоединены к элементу.

getEventListeners(document.querySelector('your-element-selector'));

Вам не нужно. Просто положите его туда столько раз, сколько вы хотите и так часто, как вы хотите. MDN объясняет идентичных слушателей событий:

Если несколько идентичных EventListeners зарегистрированы в одной и той же EventTarget с одинаковыми параметрами, дублирующиеся экземпляры отбрасываются. Они не вызывают повторный вызов EventListener, и их не нужно удалять вручную с помощью removeEventListener метод.

Другие вопросы по тегам