remove()和empty()的区别与联系
-
相关性
当需要移除指定元素时,二者均可用 -
区别
empty()****:只移除元素中的内容,元素仍在,仍然保留其在dom中所占的位置。
相当于(“label”).empty()=$(“label”).text()
remove():移除整个元素,并且不占位置 -
使用注意点:
今天在做一个关于一个清除选中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。
- 所以在之后的使用中,在判断内容是否为空时可使用empty(),清空时最好使用remove()