我在 ASP.Net MVC3 应用程序中使用非侵入式验证。我想以某种方式设置与必需元素关联的 label 元素 的样式。
我关心的不是调整必填字段周围的视觉指示符本身,而是根据此 元素的属性修改不同 元素的外观。
现在,我相信可以通过使用 CSS 规则来仅使用 CSS 来设置元素本身的样式,该规则的选择器应用于具有 [data-val-required]
属性的所有元素。它看起来像这样:
input[data-val-required] { color: red; }
但是否可以为标签设置样式?说(使用 CSS 选择器)CSS 规则适用于所有 label 元素,其 for
属性指向一个 input
元素,该元素具有 [data-val-required]
属性?
我目前正在使用一些 jQuery 来应用样式,而且效果很好。但如果我可以设置一个 CSS 规则并完成它,那就更好了。
最佳答案
你不能从这里到达那里。正如@vlgalik 所说,唯一的 CSS 选项是 1) 某些浏览器不支持的选择器,以及 2) 查找其他元素的能力有限,迫使您构建您的标记以符合要求。
因此,您当前的解决方案——使用 JQuery 查找标签及其相应的输入——是你最好的选择。
但是,我会以相反的方向处理您的 jQuery 解决方案:首先找到所有匹配 input[data-val-required]
的输入,并为其中的每一个获取其 ID,然后选择相应的标签:label[for="<id-from-input>"]
-- 这似乎会减少工作量。但这是一种优化;如果页面上没有很多标签和输入,任何一个方向都可以。
关于css - 使用 CSS 设置指向具有特定属性的元素的标签样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8541161/