我有以下代码,我正在努力工作。我想要的是如果复选框被选中则显示带有“generator”类的表行,如果未选中则将其删除(默认)。我已经测试了jquery,我知道它正在加载,所以这不是问题。
以下是我尝试从jQuery checkbox event handling改编的代码:
<script>
$('#gen_form input:checkbox').click(function() {
var $this = $(this);
// $this will contain a reference to the checkbox
if ($this.is(':checked')) {
$(".generator").toggle();
} else {
$(".generator").toggle();
}
});
</script>
<?php if(isset($msg)){ echo "<span id='msg'>".$msg."</span>"; }?>
<h2>Add CLLI</h2>
<form method="post" id='gen_form'>
<table class="form_table_newuser">
<tr>
<td class='tdl'>Generator</td><td class='tdr'><input type='checkbox' id='showGen' name='generator' /></td><td> </td>
</tr>
<tr class='generator'>
<td class='tdl'>Start Time</td><td class='tdr'><input type='text' name='start_time' class='textbox'/></td><td> <span class='error'>*<?php echo $errors['start_time']; ?></span></td>
</tr>
<tr class='generator'>
<td class='tdl'>End Time</td><td class='tdr'><input type='text' name='end_time' class='textbox'/></td><td> <span class='error'>*<?php echo $errors['end_time']; ?></span></td>
</tr>
我仍然是jQuery的新手并且正在学习。我用复选框检查尝试的所有内容都失败了。我可以使用一个按钮,它工作(使用不同的代码),但我需要能够使用复选框。在发布之前我尝试了一些更多的事情,说它们都处理了复选框,但是当点击复选框时,它们都没有做任何事情。
答案 0 :(得分:8)
您需要将函数包装在文档就绪回调中,否则在处理程序绑定时元素不存在:
$(document).ready(function() {
$('#gen_form input:checkbox').click(function() {
$(".generator").toggle(); // simplifies to this
});
});
此外,jQuery .toggle()
会为您交替隐藏/显示。
答案 1 :(得分:2)
尝试将代码放在$(document).ready
处理程序中,根据标记的结构,听起来您只想选择一个输入元素,请尝试以下操作:
$(document).ready(function(){
$('#showGen').change(function(){
$('.generator').css('display', this.checked ? 'block' : 'none');
// or $('.generator').toggle()
})
})
答案 2 :(得分:1)
这是因为dom还没有准备好,你的脚本会在元素存在之前运行。
如果您将脚本包装在jQuery的文档中就好了,那么它将起作用: -
$(function(){
$('#gen_form input:checkbox').click(function() {
var $this = $(this);
// $this will contain a reference to the checkbox
if ($this.is(':checked')) {
$(".generator").toggle();
} else {
$(".generator").toggle();
}
});
});
我在jsFiddle中尝试了它并且它有效