Используйте делегирование событий на контейнере списка и находите ссылку через closest. Но у отключённой ссылки также уберите href, чтобы исключить открытие через контекстное меню.
Спасибо, Дмитрий — использование `aria-disabled`, управление фокусом с помощью `tabindex` и добавление `aria-describedby` для объяснения — это хороший базовый уровень доступности. С точки зрения производительности, если у вас есть тысячи таких ссылок в виртуализированном списке, как бы вы реализовали поведение «предотвратить навигацию при отключении», не привязывая обработчики событий к каждому элементу?
Используйте делегирование событий на контейнере списка и находите ссылку через closest. Но у отключённой ссылки также уберите href, чтобы исключить открытие через контекстное меню.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Используйте делегирование событий на контейнере списка и находите ссылку через closest. Но у отключённой ссылки также уберите href, чтобы исключить открытие через контекстное меню.
Контейнер может перехватывать click/auxclick и отменять действие для элемента с aria-disabled=true; обработчик проверяет, что элемент принадлежит этому списку. Клавиатурная навигация и объяснение причины остаются доступными по выбранной политике фокуса. CSS pointer-events:none недостаточен: он не задаёт поведение клавиатуры и семантику недоступности.