AddEventListener и удалениеEventListener в меню при изменении размера окнаCSS

Разбираемся в CSS
Ответить
Anonymous
 AddEventListener и удалениеEventListener в меню при изменении размера окна

Сообщение Anonymous »

Что я делаю не так? Когда меню открыто в мобильной версии (< 768 пикселей), первый щелчок должен открыть подменю, а второй клик должен получить родительский URL-адрес (это работает). После увеличения ширины окна до >= 768 пикселей подменю должно отображаться при наведении курсора на родительский элемент, а родительский тег должен перенаправляться на URL-адрес при первом щелчке (это не работает).
Пожалуйста, помогите мне реорганизовать window.addEventListener('resize', function(){ ... }); Потому что addEventListener и RemoveEventListener не работают должным образом.
Почему событие, запускающее функцию prevFirstClick (сначала мобильные устройства), не удаляется при увеличении экрана до >= 768 пикселей?Почему событие, запускающее функцию prevFirstClick (сначала рабочий стол), не добавляется, когда размер экрана уменьшается до li:hover .submenu{
display: block;
}
}


document.addEventListener('DOMContentLoaded', function() {

// prevent defalt behavior on parent tags - first click open submenu, second click opend href URL
let static_window_width = window.innerWidth;
const menuItems = document.querySelectorAll('.menu-item-has-children');

function prevFirstClick(){
menuItems.forEach(item => {

const preventListener = function(event){
let isOpen = item.getAttribute('aria-expanded');

if(isOpen == 'false'){
item.setAttribute('aria-expanded', 'true');

if(event.preventDefault){
event.preventDefault();
event.stopPropagation();
}else{
event.returnValue = false;
}
}
}
item.addEventListener('click', preventListener );
}); // koniec pętli foreach.
};

// fires event whent mobile firts

if( static_window_width < 768 ){
window.addEventListener('DOMContentLoaded', prevFirstClick );
}

// prevent default behavior on parent tag whent first desktop and user deside to resize to mobile and vice versa remove prevent default from tag when mobile first and then resize to desktop.

window.addEventListener('resize', function(){

const menuItems = document.querySelectorAll('.menu-item-has-children');
let dynamic_window_width = this.innerWidth;

if( dynamic_window_width < 768 ){
window.addEventListener('click', prevFirstClick );
}else{
window.removeEventListener('DOMContentLoaded', prevFirstClick, true );

menuItems.forEach(item => {
let isOpen = item.getAttribute('aria-expanded');

if (isOpen == 'true') {
// first click on parent opens submenu
item.setAttribute('aria-expanded', 'false');
}
});
}
});
});


Подробнее здесь: https://stackoverflow.com/questions/783 ... ize-window
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»