项目场景:
项目场景:
实现带有搜索历史的搜索框时,想要实现点击出现搜索历史,且点击内部不收起历史记录,点击外部才收起的效果
解决方案:
在 body
上绑定点击事件,并获取搜索组件的 DOM,当触发点击事件时,判断点击的元素e.target
是否是 搜索组件 DOM 的子节点,是就不隐藏搜索历史,不是就隐藏
<Search ref="searchComponent"/>
const searchComponent = ref();
document.body.addEventListener("click", (e) => {
console.log("e", e.target);
// Search 组件里用了 isSearchInputFocused 来控制搜索历史显示
searchComponent.value.isSearchInputFocused =
searchComponent.value.searchNode.contains(e.target);
});