有一个问题是:第一次点击全选时不能选中所有的checkbox,之后的click均能执行。望各位大神给予解答~

在id为div1的div中有全选和全不选的复选框,当点击全选时选中所有的checkbox复选框,全不选反之。$('#div1').change(function(){va... 在id为div1的div中有全选和全不选的复选框,当点击全选时选中所有的checkbox复选框,全不选反之。
$('#div1').change(function(){
var lab=$('#selectAll').parent().siblings().find('input[type=checkbox]');
$('#selectAll').click(function(){
lab.prop('checked',$('#selectAll').prop('checked'));
$('#unselAll').prop('checked',false);
});
$('#unselAll').click(function(){
lab.prop('checked',false);
$('#selectAll').prop('checked',false);
});
});
展开
 我来答
zljk0306
2016-06-20 · TA获得超过366个赞
知道小有建树答主
回答量:229
采纳率:90%
帮助的人:206万
展开全部

1、你的写法有问题的,$('#selectAll').click事件触发时,你获取到的$('#selectAll').prop('checked')值未必是你要的值,所以你要直接写成true。

2、没有必要监听div1的change事件。

3. 建议这么写:

// 全选
$('#selectAll').click(function(){
    $(this).parent().siblings().find('input[type=checkbox]').prop("checked",true);
    $('#unselAll').prop('checked',false);
});
更多追问追答
追问
监听div1的change事件是为了我要获取哪些checkbox是选中了,这里未复制全部的代码,
直接写成这样 $(this).parent().siblings().find('input[type=checkbox]').prop("checked",true);第一次点击还是不能实现选中所有,但第二次,第三次都能实现。。。这是什么原因呢
追答

当你在执行lab.prop('checked',$('#selectAll').prop('checked'));这句话的时候,$('#selectAll').prop('checked')的值不一定改变,因为你监听的是$('#selectAll').click(function(){}) click事件,而不是checkbox的change事件

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式