php即点即改,实例讲解jQuery实现checkbox即点即改批量删除功能

本文主要介绍了jQuery实现checkbox即点即改批量删除及中间遇到的坑,非常不错,具有参考借鉴价值,需要的朋友可以参考下,希望能帮助到大家更好的学习掌握jQuery。

最近要用jQuery实现一个批量删除操作,效果如下图

f87f3b17278deda2ae634482312b5bd4.png

最终页面page.html,此页面使用了bootstrap和jQuery,如果没有需要下载一下

视频管理

.head {

background-color: #EFEFF4;

font-size: 16px;

color: black;

padding: 20px;

font-size: 20px;

overflow: hidden;

margin-bottom: 10px;

}

.table {

margin-top: 30px;

border: 1px solid #CCCCCC;

}

.name_info {

color: red;

}

.message p {

margin: 0px;

padding: 0px;

}

.form_0 {

background-color: #EEEEEE;

}

视频管理

批量删除 0

删除成功

添加

请选择课程

2

请选择老师

2

查询

选择序号名称介绍讲师时长播放次数编辑删除

1环境搭建这视频真tm牛逼老王666666

编辑

删除

1环境搭建这视频真tm牛逼老王666666

编辑

删除

1环境搭建这视频真tm牛逼老王666666

编辑

删除

×

关闭

确定

$(document).ready(function() {

$("#delete").click(function() {

var click_name = $(this).parent().siblings("#show_name").html();

var click_id = $(this).parent().siblings("#show_id").html();

$("#info").html("你确定要删除视频:" + click_name + "吗?");

$("#id").val(click_id);

})

$("#delete_submit").click(function() {

$("#_method").val("DELETE");

$("#form").submit();

})

$("#edit_submit").click(function() {

var click_id = $(this).parent().siblings("#show_id").html();

$("#id").val(click_id);

$("#form").attr("method", "get");

$("#_method").val("get");

$("#form").submit();

})

//获取选中的个数

$(".check_0").click(function() {

$("#badge_0").html($("input[type=checkbox]:checked").length);

//alert($("input[type = checkbox]: checked ").length);

})

//批量删除

$("#batchDel").click(function() {

var params = "";

$("input[type = checkbox]:checked").each(function(index,element){

//第一个id不需要加前缀

if(index == 0) {

params += "id=" +

$(this).val();

} else {

params += "&id=" +

$(this).val();

}

});

alert("生成的拼接参数:" + params);

})

})

上图的操作主要需要两个操作:

一、当checkBox点击时进行选中计数(带坑)。

二、当点击批量删除时,拼接选中单位的id,传递给个后台。

初看一下,感觉这些很好实现,并且实现的方法很多。当初我也是这么认为的,结果搞了一个上午.......,接下来就看看jQuery的一些坑。

我开始想法是每次点击checkBox时,对所有的checkBox进行each()遍历,如果是勾选状态就将Num++,最后将num的值赋给批量删除的数字小标签,顺便把id也拼接了。

$(".check_0").click(function(){

var num=0;

var del_str="";

$(".check_0").each(function(){

alert($(this).val()+":"+$(this).attr("checked"));

if($(this).attr("checked")=="checked"){

num++;

del_str+=$(this).parent().siblings("show_id").html()+"/";

}

alert(this.checked);

})

})

当这段代码触发时,却发现一个诡异的现象:这段代码会在勾选效果前先触发。类似于beforeClick(),所以当代码遍历时,无法获取当前的勾选状态。

就这个问题,我在网上找了半天答案,硬是不知道如何解决,什么mouseup()都用了一下,都是beforeClick的效果。

最后我使用了另一种写法。

//获取选中的个数

$(".check_0").click(function() {

$("#badge_0").html($("input[type=checkbox]:checked").length);

//alert($("input[type = checkbox]: checked ").length);

})

//批量删除

$("#batchDel").click(function() {

var params = "";

$("input[type = checkbox]:checked").each(function(index,element){

//第一个id不需要加前缀

if(index == 0) {

params += "id=" +

$(this).val();

} else {

params += "&id=" +

$(this).val();

}

});

alert("生成的拼接参数:" + params);

})

成功运行出效果!

结论:

在click()中使用input[type=[checkbox]:checked]选择器获得勾选元素时,得到的就是勾选后的结果afterclick()。

而使用.each()遍历时,获取的是勾选前的效果beforeclick。

为什么一个click函数里,能得出beforeclick和aferclick两种效果?

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设你的 HTML 代码如下: ```html <table id="items"> <thead> <tr> <th>选择</th> <th>名称</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td><input type="checkbox" name="ids[]" value="1"></td> <td>项目 1</td> <td><button class="delete-btn" data-id="1">删除</button></td> </tr> <tr> <td><input type="checkbox" name="ids[]" value="2"></td> <td>项目 2</td> <td><button class="delete-btn" data-id="2">删除</button></td> </tr> <tr> <td><input type="checkbox" name="ids[]" value="3"></td> <td>项目 3</td> <td><button class="delete-btn" data-id="3">删除</button></td> </tr> </tbody> </table> <button id="batch-delete-btn">批量删除</button> ``` 你可以使用以下 jQuery 代码来实现批量删除: ```javascript $(function() { // 单个删除 $('.delete-btn').click(function() { var id = $(this).data('id'); if (confirm('确定要删除吗?')) { // 发送 AJAX 请求删除数据 $.ajax({ url: '/path/to/delete', type: 'POST', data: {id: id}, success: function() { // 删除行 $('tr[data-id="' + id + '"]').remove(); }, error: function() { alert('删除失败!'); } }); } }); // 批量删除 $('#batch-delete-btn').click(function() { var ids = []; $('input[name="ids[]"]:checked').each(function() { ids.push($(this).val()); }); if (ids.length == 0) { alert('请选择要删除的项目!'); return; } if (confirm('确定要删除所选项目吗?')) { // 发送 AJAX 请求删除数据 $.ajax({ url: '/path/to/batch/delete', type: 'POST', data: {ids: ids}, success: function() { // 删除行 $.each(ids, function(index, id) { $('tr[data-id="' + id + '"]').remove(); }); }, error: function() { alert('删除失败!'); } }); } }); }); ``` 在单个删除中,我们为每个删除按钮添加了一个点击事件,当用户点击该按钮时,会弹出确认对话框,询问用户是否确定要删除。如果用户确认删除,我们会发送一个 AJAX 请求,将该行数据从服务器删除,然后在页面上删除该行。 在批量删除中,我们首先获取所有被选中的复选框的值,然后检查是否至少选中了一个项目。如果没有选中任何项目,我们会弹出警告消息。如果用户确认要删除所选项目,我们会将所有选中项目的 ID 发送到服务器,服务器会将这些项目从数据库中删除,然后在页面上删除这些行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值