我使用jquery select all checkboxes尝试查看所有复选框按钮。使用此答案中的代码,我的按钮会立即消失,如此Fiddle
所示JS:
$(function(){
$('#checkAll').toggle(
function(){
$('#numberList .numberClass').prop('checked',true);
},
function(){
$('#numberList .numberClass').prop('checked',false);
});
});
HTML:
<div id='numberList'>
<table>
<tr>
<th>
<input type='button' id='checkAll' name='checkAll' value='Check All'>
</td>
</tr>
<tr>
<td>
<input class='numberClass' type='checkbox' id='number[" . $k . "]' name='number[" . $k . "]'>
</td>
</tr>
<tr>
<td>
<input class='numberClass' type='checkbox' id='number[" . $k . "]' name='number[" . $k . "]'>
</td></tr>
</table>
</div>
我错过了什么是显而易见的?
答案 0 :(得分:4)
如documentation中所述,jQuery 1.9中删除了.toggle(function, function)
版本(即事件处理方面)。因此,它将其视为另一个.toggle()
方法,用于切换一组元素的可见性 - 因为它设置为使用HTML和CSS可见,jQuery是切换到不可见。
答案 1 :(得分:0)
答案 2 :(得分:0)
正如安东尼所说,使用.toggle
的方式在jQuery 1.8中被弃用,并在1.9中删除。 .toggle
现在切换元素可见性,这就是您看到按钮消失的原因。
阅读the source for the now-removed .toggle
in jQuery 1.8可以提供修复此问题的线索。避免全局变量的一种方法是使用.data()
来存储复选框的当前状态:
$('#checkAll').click(
function () {
var currentlyChecked = $(this).data('checked') || false,
shouldBecomeChecked = !currentlyChecked;
$('#numberList .numberClass').prop('checked', shouldBecomeChecked);
$(this).data('checked', shouldBecomeChecked);
}
);
答案 3 :(得分:0)
我的解决方案如下:
$('#checkAll').change(
function(){
if ($(this).prop('checked')){
var status = true;
}
else{
var status = false;
}
$('.numberClass').prop('checked',status);
});
感谢所有评论者。