基本上,我想只显示这些字段,如果选中复选框,如果它被取消选中,则消失。
<input type="checkbox" name="supplied" value="supplied" class="aboveage2" />
<ul id="date">
<li><input id="start" name="start" size="5" type="text" class="small" value="1" /></li>
<li><input id="end" name="end" size="5" type="text" class="small" value="2" /></li>
</ul>
我尝试过类似的事情:
$('#supplied').live('change', function(){
if ( $(this).val() === 'supplied' ) {
$('.date').show();
} else {
$('.date').hide();
}
});
非常感谢任何建议=)
答案 0 :(得分:16)
“#foo”选择器查找 id 值为“foo”而非“name”的元素。因此,您需要做的第一件事就是在复选框中添加“id”属性。
要担心的第二件事是,在IE(至少旧版本)中,只有在复选框元素失去焦点时才会触发“更改”事件。最好处理“click”,你要检查的是元素的“checked”属性。
我写的是:
$('#supplied').click(function() {
$('.date')[this.checked ? "show" : "hide"]();
});
答案 1 :(得分:4)
Pointy指出你需要设置我们复选框的id(或使用名称选择器)。您还需要使用#date
(id)而不是.date
(类)(或再次更改HTML)。
答案 2 :(得分:3)
你可以用纯CSS3做到这一点,当然:
:checked + #date { display: block; }
#date { display: none; }
等效的选择器也应该在jQuery中运行得很好。
答案 3 :(得分:0)
试试这个:
$('input[name=supplied]').live('change', function(){
if ( $(this).is(":checked")) {
$('#date').show();
} else {
$('#date').hide();
}
});
答案 4 :(得分:0)
Matthews的回答很有效,只是在jQuery 1.7中弃用的.live使用.on
$('#supplied').on('change', function(){
if ( $(this).is(':checked') ) {
$('#date').show();
} else {
$('#date').hide();
}
});
答案 5 :(得分:-1)
尝试类似:
$('#supplied').live('change', function(){
if ( $(this).attr("checked")) {
$('.date').show();
} else {
$('.date').hide();
}
});