在 html5 定义下使用标签的“for”值作为普通 div 元素的 id 是否有效(例如,我制作了一个包含在 div 中的自定义下拉列表实现)
如果可能的话请让我知道,
托马斯
在 html5 定义下使用标签的“for”值作为普通 div 元素的 id 是否有效(例如,我制作了一个包含在 div 中的自定义下拉列表实现)
如果可能的话请让我知道,
托马斯
不符合规范:
一些元素(并非所有元素都与表单相关)被归类为可标记元素。这些是可以与标签元素相关联的元素。
"button" "input" (如果 type 属性没有处于隐藏状态) "keygen" "meter" "output" "progress" "select" "textarea"
http://www.w3.org/TR/html5/forms.html#category-label
也可以看看:
可以指定 for 属性以指示与标题关联的表单控件。如果指定了属性,则属性的值必须是与标签元素在同一文档中的可标记元素的 ID。如果指定了属性并且 Document 中有一个元素的 ID 等于 for 属性的值,并且第一个这样的元素是可标记元素,则该元素是标签元素的标记控件。
http://www.w3.org/TR/html5/the-label-element.html#attr-label-for
我确实认为这个问题提出了一个有效的用例。我不确定这种情况下推荐的模式是什么,尽管 ARIA 属性可能有助于使标记更易于访问:
https://developer.mozilla.org/en/Accessibility/ARIA/forms/Basic_form_hints https://developer.mozilla.org/Special:Tags?tag=ARIA
As Tim noted it is not possible to do it natively, however with a little bit of javascript you can simulate it
jQuery(document).delegate('[for]','click',function(e){
var targetEl = jQuery('#'+jQuery(this).attr('for'));
if(targetEl.is('div.your-custom-dropdown-class')) { //if targetEl is one of your dropdowns
e.preventDefault();
targetEl.trigger('click'); //open the drop down
}
});