删除最后一个任务时如何隐藏prikaziizmeni div?
问题修复:删除最后一个任务时正确切换显示状态
问题根源
你遇到的计数偏差,大概率是计数时机不对(删除DOM元素前就计算了数量),或者选择器包含了隐藏/已标记删除的元素,导致剩余任务数判断错误,无法触发#prikaziizmeni的隐藏逻辑。
解决方案
1. 调整操作顺序:先删元素,再计数
确保在删除任务DOM节点之后,再统计剩余任务数量,避免用删除前的旧数据判断。
2. 精准选择可见任务(可选)
如果你的任务元素存在隐藏状态(比如用hide()而非remove()),需要用:visible筛选仅可见的任务,避免统计无效元素。
修正后的obrisiZadatak函数示例
function obrisiZadatak() { // 1. 先移除当前要删除的任务DOM元素 // 假设通过点击事件触发,用closest找到对应的.zadatakid父元素 $(this).closest(".zadatakid").remove(); // 2. 统计剩余任务数(若有隐藏元素,改用$(".zadatakid:visible").length) const preostaliZadaci = $(".zadatakid").length; // 3. 执行显示/隐藏逻辑 if (preostaliZadaci === 0) { // 隐藏任务选择区域 $("#prikaziizmeni").hide(); // 显示无任务提示 $("#bezZadatakaPoruka").show(); // 隐藏删除成功提示(避免同时显示) $("#obrisanZadatakPoruka").hide(); } else { // 显示删除成功提示 $("#obrisanZadatakPoruka").show(); // 可选:3秒后自动隐藏提示 setTimeout(() => $("#obrisanZadatakPoruka").hide(), 3000); } }
额外注意点
- 如果删除操作是异步请求后端(比如AJAX),必须把DOM操作和计数逻辑放在请求的
success回调里,否则会因为异步执行顺序问题导致计数错误。 - 检查你的任务元素是否真的被
remove()移除,而不是仅仅用hide()隐藏——如果是后者,.length会包含隐藏元素,必须用:visible筛选。
内容的提问来源于stack exchange,提问作者user21626341
相关产品推荐
相关产品推荐

