Селектор jQuery, содержащий атрибуты и одноуровневые селекторы, не работаетCSS

Разбираемся в CSS
Ответить Пред. темаСлед. тема
Anonymous
 Селектор jQuery, содержащий атрибуты и одноуровневые селекторы, не работает

Сообщение Anonymous »


У меня есть мобильное меню, которое открывается при нажатии на значок. Большинство ссылок меню ведут на другие страницы, но есть также локальные ссылки с атрибутами href='#xxxx' и идентификаторами той же страницы в качестве цели ссылки.

Открытие и закрытие меню запускается скриптом jQuery, который срабатывает при нажатии на значок (во фрагменте ниже: красный квадрат).

При нажатии на локальную ссылку, ведущую к идентификатору ниже на странице, меню остается открытым, чего не должно быть. Я попытался добавить скрипт для закрытия меню при нажатии любого пункта меню, но селектор в этом скрипте, похоже, не работает.

Вот нерабочая версия — обратите внимание на селектор jQuery, объединяющий селектор атрибутов и одноуровневый селектор с другими. Это только мобильная версия, я исключил все медиа-запросы.

Примечание. Тот же селектор работает и в CSS (последнее правило):

(Кстати: HTML-код меню генерируется Wordpress)

//Переключение мобильного меню при нажатии на значок навигации jQuery('#navicon_1').on('click', function() { jQuery('#main_nav').slideToggle(300); jQuery(this).attr("aria-expanded", function(i, attr) { //изменяем расширенный статус вернуть атрибут === 'истина'? 'false true'; }); }); //закрываем мобильное меню при нажатии на любой значок меню jQuery("#navicon_1[aria-expanded='true'] + #main_nav ul li.menu-item").on('click', function() { //alert("СЕЙЧАС ДОЛЖНО РАБОТАТЬ"); jQuery('#main_nav').hide(); //закрываем меню jQuery('#navicon_1').attr("aria-expanded", function(i, attr) { //изменяем расширенный статус вернуть атрибут === 'истина'? 'false true'; }); }); * { размер коробки: граница-коробка; } #navicon_1 { позиция: абсолютная; справа: 50 пикселей; ширина: 32 пикселей; высота: 32 пикселей; курсор: указатель; дисплей: блок; граница: нет; фон: красный; текстовый отступ: -5000 пикселей; } #main_nav { дисплей: нет; позиция: абсолютная; поле справа: -30 пикселей; верх: 40 пикселей; переполнение-у: авто; справа: 40 пикселей; заполнение: 0 0 0 0; фон: #fff; -webkit-box-shadow: -2px 10px 10px #aeaeae; box-shadow: -2px 10px 10px #aeaeae; } #main_nav>ul { ширина: 230 пикселей; внизу: 0; выравнивание текста: по левому краю; отступы: 8 пикселей 0 8 пикселей 10 пикселей; } #main_nav>ул ли { размер шрифта: 17 пикселей; дисплей: блок; ширина: 100%; высота строки: 1,6; отступы: 4 пикселя 6 пикселей 4 пикселя 8 пикселей; фон: #eee; } #navicon_1[aria-expanded='true']+#main_nav ul li.menu-item { фон: #fb6;

А вот версия, в которой селектор упрощен, без учета атрибутов и одноуровневых селекторов. Это работает: когда вы нажимаете на любой пункт меню, меню закрывается.

Но мне нужно ограничить функцию ситуацией, когда #navicon_1 имеет статус «aria-expanded=true» — в противном случае меню исчезает на рабочем столе при нажатии локальной ссылки: //Переключение мобильного меню при нажатии на значок навигации jQuery('#navicon_1').on('click', function() { jQuery('#main_nav').slideToggle(300); jQuery(this).attr("aria-expanded", function(i, attr) { //изменяем расширенный статус вернуть атрибут === 'истина'? 'false true'; }); }); jQuery("#main_nav ul li.menu-item").on('click', function () { //alert("СЕЙЧАС ДОЛЖНО РАБОТАТЬ"); jQuery('#main_nav').hide();//закрываем меню jQuery('#navicon_1').attr("aria-expanded", function(i, attr) {//изменить расширенный статус вернуть атрибут === 'истина'? 'false true'; }); }); * { размер коробки: граница-коробка; } #navicon_1 { позиция: абсолютная; справа: 50 пикселей; ширина: 32 пикселей; высота: 32 пикселей; курсор: указатель; дисплей: блок; граница: нет; фон: красный; текстовый отступ: -5000 пикселей; } #main_nav { дисплей: нет; позиция: абсолютная; поле справа: -30 пикселей; верх: 40 пикселей; переполнение-у: авто; справа: 40 пикселей; заполнение: 0 0 0 0; фон: #fff; -webkit-box-shadow: -2px 10px 10px #aeaeae; box-shadow: -2px 10px 10px #aeaeae; } #main_nav>ul { ширина: 230 пикселей; внизу: 0; выравнивание текста: по левому краю; отступы: 8 пикселей 0 8 пикселей 10 пикселей; } #main_nav>ул ли { размер шрифта: 17 пикселей; дисплей: блок; ширина: 100%; высота строки: 1,6; отступы: 4 пикселя 6 пикселей 4 пикселя 8 пикселей; фон: #eee; } #navicon_1[aria-expanded='true']+#main_nav ul li.menu-item { фон: #fb6;
  • Меню 1
  • Меню 2
  • Меню 3
  • Меню 4
  • Меню 5

Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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