28

在 html5 定义下使用标签的“for”值作为普通 div 元素的 id 是否有效(例如,我制作了一个包含在 div 中的自定义下拉列表实现)

如果可能的话请让我知道,

托马斯

4

2 回答 2

22

不符合规范:

一些元素(并非所有元素都与表单相关)被归类为可标记元素。这些是可以与标签元素相关联的元素。

"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

于 2012-07-29T01:37:18.760 回答
3

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
    }
});
于 2012-07-29T01:46:05.670 回答