Подтвердить что ты не робот

Могут ли метки метки атрибута ассоциироваться с обычным div?

действительно ли html в определениях html5 использовать метку "для" значения как идентификатор нормального элемента div (например, я создал пользовательскую реализацию выпадающего списка, заключенную внутри div)

Пожалуйста, дайте мне знать, если возможно,

Томас

4b9b3361

Ответ 1

Не соответствует спецификации:

Некоторые элементы, не все из которых связаны с формами, классифицируются как маркируемые элементы. Это элементы, которые могут быть связаны с элемент метки.

"button" "input" (если атрибут type не находится в скрытом состоянии) "keygen" "meter" "output" "progress" "select" "textarea"

http://www.w3.org/TR/html5/forms.html#category-label

См. также:

Атрибут for может быть указан для указания элемента управления формой с помощью которые надпись должна быть связана. Если атрибут указан, значение атрибута должно быть идентификатором маркируемого элемента в тот же документ, что и элемент метки. Если атрибут указан и в документе есть элемент, идентификатор которого равен значению атрибут 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

Ответ 2

Как заметил Тим, это невозможно сделать изначально, но с небольшим количеством javascript вы можете имитировать его.

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
    }
});