jQuery UI Tabs widget generates invalid ARIA markup that creates nested interactive elements, causing multiple accessibility violations including:
- Nested focusable elements (
<li> and <a> both focusable)
- Invalid ARIA role hierarchy
- Screen reader announcement conflicts
- Keyboard focus management issues
Technical Details
Current Problematic Output
<ul role="tablist">
<li role="tab" tabindex="0" aria-selected="true">
<a href="#tab1" class="ui-tabs-anchor">Tab 1</a>
</li>
</ul>
<li role="tab" tabindex="0">is focusable
Child <a> element receives focus events
Creates ambiguous focus target for assistive technologies
Invalid ARIA Role Inheritance
Parent <li> has role="tab"
Child <a> has no role but receives focus
Breaks expected ARIA tab pattern
Programmatic Focus Issues
jQuery UI internally adds tabindex="0" to LIs via _tabindex() method
Manual removal of tabindex is overwritten during widget refresh
Keyboard navigation events conflict between LI and anchor
jQuery UI Tabs widget generates invalid ARIA markup that creates nested interactive elements, causing multiple accessibility violations including:
<li> and <a>both focusable)Technical Details
Current Problematic Output
<li role="tab" tabindex="0">is focusableChild
<a>element receives focus eventsCreates ambiguous focus target for assistive technologies
Invalid ARIA Role Inheritance
Parent
<li>has role="tab"Child
<a>has no role but receives focusBreaks expected ARIA tab pattern
Programmatic Focus Issues
jQuery UI internally adds
tabindex="0"to LIs via _tabindex() methodManual removal of tabindex is overwritten during widget refresh
Keyboard navigation events conflict between LI and anchor