[英]Get ID of parent input div with nested radio buttons for accessibility
我有一些高度嵌套的自定义单选按钮。 我希望子单选按钮在 label 中引用其父级(出于可访问性原因)。 我打算使用aria-labelledby
来做到这一点。
我最大的问题是单选按钮是动态生成的,所以我需要能够弄清楚父 ID 是什么。
目前,html 的布局如下:
<div... <input id="cat" name="level-parent" type="radio" value="cat" /> <label for="cat" /> <div> <div... <div... <div <div... <input name="level-child-0" id= leash" type="radio" value="leash"> <label /> <div... <div... <div... <input name="level-child-1" id= "blue" type="radio" value="blue"> <label />
输入和标签都是由映射的同一个组件生成的。
<input type="radio" name={`level-${level}`} value={choiceId} id={choiceId} aria-labelledby={} /> <label htmlFor={choiceId} />
在创建单选按钮时会传入choiceId 和 level。
当屏幕阅读器读取 label 时,我希望每个孩子都参考其父母。
因此,对于id="level-child-1"
的<input>
标签,它会说“leash, blue”,而对于id="level-child-0"
的<input>
标签,它会说,“cat, leash "
有没有办法获取父输入ID? 我研究过使用类似const parentInput = document.getElementById("label").parentNode.nodeName;
但问题是我不知道父母的身份。 它可以在节点上 go 直到找到父input
组件的 id 吗?
这是一个带有工作嵌套单选按钮的基本 jsfiddle: http://jsfiddle.net/wgoLxanc/所以我至少弄清楚了这个概念。 棘手的事情是弄清楚如何获取父ID。
获取父元素的未知 ID:
香草 Javascript:
上一级:
document.querySelector("YOUR-ELEMENT-SELECTOR").parentNode.id;
上两层:
document.querySelector("YOUR-ELEMENT-SELECTOR").parentNode.parentNode.id;
jQuery:
上一级:
$("YOUR-ELEMENT-SELECTOR").parent().attr("id");
上两层:
$("YOUR-ELEMENT-SELECTOR").parent().parent().attr("id");
使用单选按钮中的数据属性来保存父 ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.