2012-08-06 92 views
20

我知道您可以使用for和id属性将标签与输入相关联。但是,你可以使用一个类而不是一个ID?谢谢关联标签输入与类非ID?

<label for="rooms">Number of rooms</label> 
<select id="rooms"> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
        <option value="4">4</option> 
</select> 

回答

38

类不是唯一的(你可以有多个具有相同类的元素),所以没有。

如果你想一个标签的输入,而无需使用ID相关联,您可以隐含通过包括上述标签的输入内分配给它:

<label>Number of rooms 
    <select name="rooms"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
    </select> 
</label> 
+2

虽然支持此功能不如'for'属性。 (虽然它是旧的 - IE是主要问题,它可能已经足够死了,现在无所谓)。 – Quentin 2012-08-06 15:08:06

+0

不错 - 我没有意识到能够将控件嵌套在标签中 – freefaller 2012-08-06 15:08:08

+0

@Quentin:Aye,除非他在某种形式的扭曲的本地应用程序中使用IE6,否则应该没有问题。那些使用IE6的人应该(恕我直言)看到破损的网站,并附加一条通知让他们升级。如果他们不想,你可以想象他们可以自己去做什么。 – 2012-08-06 15:10:20

3

不,你不能。您可以使用的唯一属性是id属性。

由于一个标签只能与一个窗体控件关联,因此使用一个类(描述相关元素的)没有意义。

4

不,你不能使用一个元素的class,因为同一个类可以被多个元素使用 - 在这种情况下,哪个元素是label

3

这里是你的时候的例子不想使用ID或嵌套控件:

  • 我正在创建一个使用模板的BackboneJS应用程序。由于模板可以重复使用,因此避免使用ID很重要,因为它会在具有相同ID的DOM中创建多个元素。

  • 我还使用Bootstrap,它将以不同的(并且不受欢迎的)方式呈现控件,如果它被包裹在<label>元素中。

在这一点上,唯一的解决方案是我可以找到控制元素和tweek默认的CSS来获得所需的输出。如果有人有更优雅的解决方案,请登录。