'js'
This commit is contained in:
parent
e64d5ffc4f
commit
0d2975ff9a
|
|
@ -1246,17 +1246,24 @@
|
||||||
//公告頁籤無障礙
|
//公告頁籤無障礙
|
||||||
$(function() {
|
$(function() {
|
||||||
function fixTabLinearOrder() {
|
function fixTabLinearOrder() {
|
||||||
var $tabs = $('.filter_tab');
|
// ✅ 只處理內部含有 .tab_nav 的 .w-annc
|
||||||
var $anncList = $('.w-annc__list');
|
var $targetAnnc = $('.w-annc').filter(function() {
|
||||||
|
return $(this).find('.tab_nav').length > 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 若頁面上沒有符合條件的 .w-annc,直接離開
|
||||||
|
if ($targetAnnc.length === 0) return;
|
||||||
|
|
||||||
|
var $tabs = $targetAnnc.find('.filter_tab');
|
||||||
|
var $anncList = $targetAnnc.find('.w-annc__list');
|
||||||
|
|
||||||
// --- 1. 順向遊走:標籤 -> 對應內容 ---
|
// --- 1. 順向遊走:標籤 -> 對應內容 ---
|
||||||
$tabs.on('keydown', function(e) {
|
$tabs.on('keydown', function(e) {
|
||||||
// 當在標籤按下 Tab (排除 Shift+Tab)
|
|
||||||
if (e.which === 9 && !e.shiftKey) {
|
if (e.which === 9 && !e.shiftKey) {
|
||||||
var category = $(this).data('category');
|
var category = $(this).data('category');
|
||||||
var $visibleItems = $('.w-annc__item[data-category="' + category + '"]:visible');
|
var $scope = $(this).closest('.w-annc'); // ✅ 限定在同一個 .w-annc
|
||||||
|
var $visibleItems = $scope.find('.w-annc__item[data-category="' + category + '"]:visible');
|
||||||
|
|
||||||
// 如果目前選中的標籤內容有連結,跳轉到內容的第一個連結
|
|
||||||
if ($visibleItems.length > 0) {
|
if ($visibleItems.length > 0) {
|
||||||
var $firstLink = $visibleItems.find('a').first();
|
var $firstLink = $visibleItems.find('a').first();
|
||||||
if ($firstLink.length > 0) {
|
if ($firstLink.length > 0) {
|
||||||
|
|
@ -1265,7 +1272,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 處理標籤的 Enter/Space 切換
|
|
||||||
if (e.which === 13 || e.which === 32) {
|
if (e.which === 13 || e.which === 32) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
$(this).click();
|
$(this).click();
|
||||||
|
|
@ -1276,25 +1282,25 @@
|
||||||
$anncList.on('keydown', '.w-annc__item a', function(e) {
|
$anncList.on('keydown', '.w-annc__item a', function(e) {
|
||||||
var $currentLink = $(this);
|
var $currentLink = $(this);
|
||||||
var $currentItem = $currentLink.closest('.w-annc__item');
|
var $currentItem = $currentLink.closest('.w-annc__item');
|
||||||
|
var $scope = $currentLink.closest('.w-annc'); // ✅ 限定在同一個 .w-annc
|
||||||
var category = $currentItem.data('category');
|
var category = $currentItem.data('category');
|
||||||
var $visibleItems = $('.w-annc__item[data-category="' + category + '"]:visible');
|
var $visibleItems = $scope.find('.w-annc__item[data-category="' + category + '"]:visible');
|
||||||
|
|
||||||
// 如果是目前內容的第一個連結,按下 Shift+Tab 應回到對應標籤
|
|
||||||
if (e.which === 9 && e.shiftKey) {
|
if (e.which === 9 && e.shiftKey) {
|
||||||
if ($currentLink.is($visibleItems.find('a').first())) {
|
if ($currentLink.is($visibleItems.find('a').first())) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
$('.filter_tab[data-category="' + category + '"]').focus();
|
$scope.find('.filter_tab[data-category="' + category + '"]').focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果是目前內容的最後一個連結,按下 Tab 應跳往「下一個標籤」
|
|
||||||
if (e.which === 9 && !e.shiftKey) {
|
if (e.which === 9 && !e.shiftKey) {
|
||||||
if ($currentLink.is($visibleItems.find('a').last())) {
|
if ($currentLink.is($visibleItems.find('a').last())) {
|
||||||
var $nextTab = $('.filter_tab[data-category="' + category + '"]').next('.filter_tab');
|
var $currentTab = $scope.find('.filter_tab[data-category="' + category + '"]');
|
||||||
|
var $nextTab = $currentTab.next('.filter_tab');
|
||||||
if ($nextTab.length > 0) {
|
if ($nextTab.length > 0) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
$nextTab.focus();
|
$nextTab.focus();
|
||||||
$nextTab.click(); // 自動切換分頁內容,符合視覺直覺
|
$nextTab.click();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1303,15 +1309,13 @@
|
||||||
// --- 3. 反向遊走:標籤 -> 上一個標籤的內容最後一個連結 ---
|
// --- 3. 反向遊走:標籤 -> 上一個標籤的內容最後一個連結 ---
|
||||||
$tabs.on('keydown', function(e) {
|
$tabs.on('keydown', function(e) {
|
||||||
if (e.which === 9 && e.shiftKey) {
|
if (e.which === 9 && e.shiftKey) {
|
||||||
|
var $scope = $(this).closest('.w-annc'); // ✅ 限定在同一個 .w-annc
|
||||||
var $prevTab = $(this).prev('.filter_tab');
|
var $prevTab = $(this).prev('.filter_tab');
|
||||||
if ($prevTab.length > 0) {
|
if ($prevTab.length > 0) {
|
||||||
var prevCategory = $prevTab.data('category');
|
var prevCategory = $prevTab.data('category');
|
||||||
|
|
||||||
// 先切換到上一個分頁
|
|
||||||
$prevTab.click();
|
$prevTab.click();
|
||||||
|
|
||||||
// 找出上一個分頁最後一個可見連結
|
var $prevItems = $scope.find('.w-annc__item[data-category="' + prevCategory + '"]:visible');
|
||||||
var $prevItems = $('.w-annc__item[data-category="' + prevCategory + '"]:visible');
|
|
||||||
var $lastLink = $prevItems.find('a').last();
|
var $lastLink = $prevItems.find('a').last();
|
||||||
|
|
||||||
if ($lastLink.length > 0) {
|
if ($lastLink.length > 0) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue