This commit is contained in:
ken 2026-09-22 21:34:42 +08:00
parent 949b3b864a
commit 0914a2e32d
1 changed files with 29 additions and 21 deletions

View File

@ -3632,40 +3632,48 @@ $(document).ready(function(){
fixGoogleMapIframeTitle(); fixGoogleMapIframeTitle();
}); });
$(function() { $(function() {
// 點擊/Enter/Space 按鈕:獨立切換子選單展開狀態,不影響上方連結的跳轉行為 function initMenuAria() {
$(document).on('click', '#main-nav .submenu-toggle', function(e) { // 確保所有具子選單的項目初始狀態為收合
e.stopPropagation(); $('#main-nav a[aria-haspopup="true"]').attr('aria-expanded', 'false');
var $btn = $(this); }
var $li = $btn.closest('li'); initMenuAria();
var expanded = $btn.attr('aria-expanded') === 'true';
$btn.attr('aria-expanded', String(!expanded)); // 鍵盤焦點移入該選單項目時,同步標記為展開
$li.toggleClass('submenu-open', !expanded);
// 這裡同步你原本用來顯示/隱藏子選單的 class 或邏輯
});
// 鍵盤焦點移入連結時,維持原本的自動展開行為(方便直接 Tab 進子選單)
$(document).on('focusin', '#main-nav li', function() { $(document).on('focusin', '#main-nav li', function() {
var $li = $(this); var $link = $(this).children('a[aria-haspopup="true"]').first();
var $btn = $li.children('.submenu-toggle').first(); if ($link.length) {
if ($btn.length) { $link.attr('aria-expanded', 'true');
$btn.attr('aria-expanded', 'true');
$li.addClass('submenu-open');
} }
}); });
// 滑鼠移入時同步(維持與滑鼠操作一致的狀態)
$(document).on('mouseenter', '#main-nav li', function() {
var $link = $(this).children('a[aria-haspopup="true"]').first();
if ($link.length) {
$link.attr('aria-expanded', 'true');
}
});
// 焦點真正離開該項目(含其子選單)時才收合,避免在子選單內移動時誤收合上層
$(document).on('focusout', '#main-nav li', function() { $(document).on('focusout', '#main-nav li', function() {
var $li = this; var $li = this;
setTimeout(function() { setTimeout(function() {
if (!$.contains($li, document.activeElement) && document.activeElement !== $li) { if (!$.contains($li, document.activeElement) && document.activeElement !== $li) {
var $btn = $($li).children('.submenu-toggle').first(); var $link = $($li).children('a[aria-haspopup="true"]').first();
if ($btn.length) { if ($link.length) {
$btn.attr('aria-expanded', 'false'); $link.attr('aria-expanded', 'false');
$($li).removeClass('submenu-open');
} }
} }
}, 0); }, 0);
}); });
// 滑鼠移出時同步收合
$(document).on('mouseleave', '#main-nav li', function() {
var $link = $(this).children('a[aria-haspopup="true"]').first();
if ($link.length) {
$link.attr('aria-expanded', 'false');
}
});
}); });