php jquery 全选删除,Jquery实现checkbox全选、取消全选和反选

这篇博客分享了一位读者在学习廖雪峰JQuery教程时,针对事件处理中全选和全不选功能的实现进行的深入理解和实践。通过提供的代码,展示了如何通过优化实现这一功能,包括监听checkbox变化和处理全选/全不选状态的切换。博主还提出了更简洁的代码实现,并提供了实际操作的效果展示,帮助初学者更好地理解这一知识点。
摘要由CSDN通过智能技术生成

最近在看廖雪峰的Jquery教程,事件篇的练习题比较综合,研究了很久终于研究出来了,现在分享出来,提供给小白学习。题目如下:

首先要获取到全选checkbox和每一项的checkbox,然后通过逻辑代码实现题目要求。

先提供常规思路的版本,代码注释已经详细了:selectAllLabel.click(() => {

selectAllLabel.hide();

deselectAllLabel.show();

langs.prop('checked', true);

});

deselectAllLabel.click(() => {//当用户去掉“全不选”时,自动不选中所有语言;

langs.prop('checked', false);

deselectAllLabel.hide();

selectAllLabel.show();

});

langs.map(() => {

$(this).change(() => {

// 首先获取已选中checkbox的个数

var len = form.find('[name=lang]:checked').length;

console.log('len=', len);

// 当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选”;

if (len === langs.length) {

selectAllLabel.hide();

deselectAllLabel.show();

selectAll.prop('checked', true);

} else { // 当用户手动去掉选中至少一种语言时,“全不选”自动被去掉选中,并变为“全选”。

selectAll.prop('checked', false);

selectAllLabel.show();

deselectAllLabel.hide();

}

});

});

invertSelect.click(() => {

langs.each(() => {

$(this).prop('checked', !$(this).prop('checked'));

});

});

上面的代码可以实现题目的要求,但是代码量有点大,强迫症不精简会死的。先看看效果吧:

下面是放大招时间,如果你已经搞懂上面的方法,请向下升级:function updateLabel() {

// 当已选中项和langs项数相等则allChecked为true,否则为false

let allChecked = langs.filter(':checked').length === langs.length;

// 根据选项是否全选中来设置“全选”选框的选中状态

selectAll.prop('checked', allChecked);

if (allChecked) {

selectAllLabel.hide();

deselectAllLabel.show();

} else {

selectAllLabel.show();

deselectAllLabel.hide();

}

}

selectAll.change(e => {

// 根据selectAll是否选中,设置每个langs的状态

langs.prop('checked', selectAll.is(':checked'));

updateLabel();

});

invertSelect.click(e => {

langs.click();

});

langs.change(() => updateLabel());

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值