2021-07-21 jquery中的remove()和empty()方法有什么区别?

remove()和empty()的区别与联系

  1. 相关性
    当需要移除指定元素时,二者均可用

  2. 区别
    empty()****:只移除元素中的内容,元素仍在,仍然保留其在dom中所占的位置。
    相当于(“label”).empty()=$(“label”).text()
    remove():移除整个元素,并且不占位置

  3. 使用注意点:
    今天在做一个关于一个清除选中checkbo所在的div标签时遇到如下问题:

 function removelable() {
       let source = document.getElementById("lock-content-input");
       let slb = source.getElementsByClassName("lock-div-first");
       let b = source.getElementsByTagName("input");
       // let lb = source.getElementsByTagName("label");
       let i;
       // let j = 0;
       for (i = 0; i < slb.length; i++) {
           if (b[i].checked == true) {
               let self = b[i].value;
               let _old = $("#lock-content-input input[value='" + self + "']").closest("div.lock-div-first");
               let _old2=$("#lock-content-input").find("input[value='" + self + "']").closest("div.lock-div-first");
               console.log(_old);
               console.log(_old2);
               console.log(_old.html());
               _old.empty();
           }
       }
   }

浏览器报错:“checked”is undefined
原因在于(大致猜想):使用empty()并不能完全清空dom元素,使其在下一次方法触发时循环中b[0]元素的位置仍然存在,但是却无法获取其checked的状态,所以一直undefined?是这么个意思吧?。。欢迎大家纠错(哭)
_old.empty()改为_old.remove()之后代码编译成功,则说明此时被删去的元素已经不占位子,故可以使用checked。

  1. 所以在之后的使用中,在判断内容是否为空时可使用empty(),清空时最好使用remove()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值