11

我要回顾最近的一个项目,整理可访问性问题,并确保所有表单元素都有标签。将标签文本放入标签会导致我之前编写的一些笨拙的代码出现问题。

基本上,如果您有一个单选按钮及其标签:

<label for="zone_r1"><input type="radio" name="zone" id="zone_r1" value="NY" />New York</label>

你使用 jquery 来隐藏它,如下所示:

$('#zone_r1').hide();

实际按钮是隐藏的,但不是标签文本。最初我为标签文本做了一个跨度并像这样隐藏它:

<input id="NY" type="radio" name="zone" value="NY" /><span id="nyTXT">New York</span>

$('#NY').hide();
$('#nyTXT').hide();

有任何想法吗?我不喜欢使用 kludge,它可能无法通过标签中的跨度验证,但也许我过于热心了。

4

7 回答 7

24

我认为这应该对你有用

$("label[for=zone_r1],#zone_r1").hide();

这将选择带有“for”属性的标签,该标签设置为您要查找的单选按钮,以及单选按钮本身,并将它们都隐藏起来

于 2009-03-13T17:38:26.673 回答
14
$('#zone_r1').parent().hide();

为我工作

于 2009-03-13T17:12:26.830 回答
3

关于什么$('label:has(#zone_r1)').hide();

于 2009-03-13T17:13:08.437 回答
2

对于第一个单选按钮,您可以隐藏实际按钮,然后隐藏其父按钮:

$('#zone_r1').hide().parent().hide();

对于第二种情况,您可以隐藏按钮和“下一个”兄弟:

$('#NY').hide().next().hide();
于 2009-03-13T17:13:37.840 回答
0

你可以这样做:

1.) 定义没有周围标签的单选按钮输入。

2.) 将“选项文本”(单选按钮右侧的文本)包裹在<span>.

3.) 使用这个 jQuery 语句:$("input:radio:not(:checked), input:radio:not(:checked) + span").hide();

这将选择单选按钮和单选按钮右侧的文本并将其隐藏。

于 2009-09-21T16:14:30.790 回答
0

只需将“标签”选择器放在父级中:

$(':radio[id=zone_r1]').parent('label').hide();

请参阅我的 jsFiddle 示例

于 2013-04-24T13:25:05.353 回答
0

根据值隐藏单选按钮容器或 TD

jQuery("input[type=radio][value='EU2']").parent().hide();

于 2016-11-15T10:41:13.117 回答