3

好的,我有一个这样的 Html 元素

<input type="button" id="harhar"/><label for="harhar">Im only for Id</label>

我是否可以将标签引用到不使用 id 而是使用类的元素?像这个

<input type="button" class="harhar"/><label for="harhar">Refer me as a class</label>

这可能吗?

注意:这是为了在服务器端创建动态 Jquery UI 按钮,这就是为什么我希望它引用一个类

4

4 回答 4

2

不,标签总是指 ID,因为只有 ID 在文档中是唯一的,而这正是标签所需要的。

您将不得不退回到创建具有可预测的(如果是动态的)ID 的按钮。

于 2012-05-21T06:28:16.903 回答
2

根据html 规范,您必须在for属性中使用元素 id。但是,该规范还指出

当 [for attribute is] 不存在时,被定义的标签与元素的内容相关联。

因此,您可以通过重新排列 html 代码将标签与输入相关联。

于 2012-05-21T06:28:19.003 回答
2

不,不可能将一个类和一个 for 匹配在一起。但是,您可以采取一些措施来确保您的 id 和 for 与其他 for 和 id 属性唯一不同。

当您在服务器端生成元素时,请使用 for 循环或其他一些循环结构来枚举您的 id/for 属性。

<input type="button" id="harhar_1"/><label for="harhar_1">Im only for Id</label>
<input type="button" id="harhar_2"/><label for="harhar_2">Im only for Id</label>
<input type="button" id="harhar_3"/><label for="harhar_3">Im only for Id</label>

如果您可以这样生成 HTML,那么您将能够匹配您的标签和值,同时仍然使用唯一 ID。

此外,没有什么可以阻止您仍然对所有元素应用通用类名,以便您仍然可以使用 CSS 或选择器轻松引用它们:

<input class="harhar" type="button" id="harhar_1"/><label for="harhar_1">Im only for Id</label>
<input class="harhar" type="button" id="harhar_2"/><label for="harhar_2">Im only for Id</label>
<input class="harhar" type="button" id="harhar_3"/><label for="harhar_3">Im only for Id</label>

这为您提供了编写简洁的 CSS 规则或快速轻松地操作 DOM 所需的钩子。

于 2012-05-21T06:28:45.120 回答
1

根据规格标签,必须与 ID 匹配。

一种解决方法是让标签包裹它的目标元素。但是,它不适用于屏幕阅读器等(您可以使用相同的文本作为title输入元素的属性)。

<label><input type="button" title="I am the same label" />
     I know change how this's styled...</label>
于 2012-05-21T06:33:11.077 回答