如何使用jQuery检测已移除元素?僵尸击杀游戏开发求助
用jQuery检测僵尸元素移除的实现方案
当然可以用jQuery实现元素移除的检测啦!针对你这款僵尸击杀游戏的场景,我给你两种实用的方案,你可以根据自己的代码习惯来选:
方案一:利用jQuery的remove()事件监听
jQuery的remove()方法在执行时会自动触发remove事件,我们可以通过事件委托来监听所有.zombie元素的移除动作,非常贴合你当前的代码逻辑:
步骤1:修改移除代码为jQuery方式
把你现有代码里的原生e.target.remove()替换成jQuery的移除方法:
plansza.addEventListener('click', function(e) { if (e.target.classList.contains('zombie')) { e.target.live--; if (e.target.live <= 0) { score += 10; // 改用jQuery的remove方法触发事件 $(e.target).remove(); document.querySelector('.score span').innerText = score; } } });
步骤2:监听僵尸元素的移除事件
添加一段事件监听代码,就能在僵尸被移除时触发你需要的逻辑:
// 通过事件委托监听所有.zombie元素的移除 $(document).on('remove', '.zombie', function() { console.log('一只僵尸被消灭并移除了!'); // 这里可以添加你需要的后续操作,比如播放击杀音效、刷新游戏统计等 });
方案二:用MutationObserver监听DOM变化(兼容原生移除)
如果你不想修改现有原生的remove()代码,也可以用原生的MutationObserver API(jQuery也能配合使用)来监听DOM树的变化,检测元素是否被移除:
// 创建观察者实例,配置回调函数 const zombieObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { // 遍历所有被移除的节点,检查是否是僵尸元素 mutation.removedNodes.forEach(function(node) { if (node.classList && node.classList.contains('zombie')) { console.log('检测到僵尸元素被移除:', node); // 执行你的自定义逻辑 } }); }); }); // 开始观察游戏容器plansza的子节点变化 zombieObserver.observe(plansza, { childList: true, // 只监听子节点的添加/移除 subtree: false // 如果僵尸嵌套在其他元素里,可改为true });
这个方案的优势是不管你用原生JS还是jQuery移除元素,都能准确检测到,非常灵活。
内容的提问来源于stack exchange,提问作者Mariusz
相关产品推荐
相关产品推荐

