为什么Chrome上的此功能无法正常工作?
$('.main').on('change','input[name="select_all"]',function(){
if($(this).is(':checked')){
$('input[type="checkbox"]',$(this).parent().parent().parent()).attr('checked',true);
}else{
$('input[type="checkbox"]',$(this).parent().parent().parent()).removeAttr('checked');
});
第一次点击它会全部检查,第二次它会取消全部...但是第三次没有做任何事情......
PS。它确实添加和删除了已检查的属性,但在视觉上它不会改变。
Chrome 31.0.1650.57 m
答案 0 :(得分:8)
使用prop
代替attr
:
$('.main').on('change','input[name="select_all"]',function(){
if($(this).is(':checked')){
$('input[type="checkbox"]',$(this).parent().parent().parent()).prop('checked',true);
}else{
$('input[type="checkbox"]',$(this).parent().parent().parent()).prop('checked', false);
}
});
jQuery documentation解释了差异并列出了您应该使用prop
的一些案例。
答案 1 :(得分:-1)
$('.main').on('change','input[name="select_all"]',function(){
if($(this).is(':checked')){
$('input[type="checkbox"]',$(this).parent().parent().parent()).attr('checked',true);
}else{
$('input[type="checkbox"]',$(this).parent().parent().parent()).attr('checked',false);
});
我希望这就是你要找的东西